PHP笔记不断补充中

PHP笔记不断补充中

一、 PHP简介

认识PHP

PHP Hypertext Preprecessor 超文本预处理器 可以嵌入到html代码中的

PHP通用开源动态脚本语言,运行在服务端,适合高效快捷的进行web开发

通常用于创建动态生成的网页,支持常用的数据库 MySql, mariaDB ,Oracle, MongoDB

php发展史

php5 2004-7 引入了面向对象编程 5.4 trait 5.6

php7 201搭建源码点我wcqh.cn5-12 性能是 php5.6提高了2倍

php7.4 提供了pre-loading预加载机制,实现了部分程序的常驻内存

4 2020-11 PHP8.0问世 高效的JIT just-in-time(即使编译)运算支持,PHP 已经应用到 websocket服务,高性能web,物联网,即时通讯,游戏,微服务等非web领域的系统开发

PHP 工作运行原理

二、 PHP语法第一课

PHP include request区别

(1)、include 遇到错误还继续,非常适合模版

(2)、request遇到错误就停止

include: 加载失败不中断 常用于加载模板或页面

require: 加载失败中断,常用于加载对象搭建源码点我wcqh.cn或数据

PHP 函数不区分大小写、php变量大小敏感

索引数组

关联数组

二维数组遍历

for

foreach

list()数组找那个的值赋给一组变量

extract

php 变量

1. 数据类型转换

转换方式 函数 临时转换 (int),(string),(array),(object)… 自动转换 根据操作符对操作数的类型要求进行 强制转换 settype()

PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有:

(int)搭建源码点我wcqh.cn、(integer):转换成整形

(float)、(double)、(real):转换成浮点型

(string):转换成字符串

(bool)、(boolean):转换成布尔类型

(array):转换成数组

(object):转换成对象

第一种转换方式: (int) (bool) (float) (string) (array) (object)

$num1=3.14;

$num2=(int)$num1;

var_dump($num1); //输出float(3.14)

var_dump($num2); //输出int(3)

?>

第二种转换方式: intval() floatval() strval()

$str=”1搭建源码点我wcqh.cn23.9abc”;

$int=intval($str); //转换后数值:123

$float=floatval($str); //转换后数值:123.9

$str=strval($float); //转换后字符串:”123.9”

?>

第三种转换方式: settype();

$num4=12.8;

$flg=settype($num4,”int”);

var_dump($flg); //输出bool(true)

var_dump($num4); //输出int(12)

?>

2. 类型检测

转换方式 函数 标量 is_int(),is_搭建源码点我wcqh.cnstring(),is_bool()… 复合 is_array(),is_object() 特殊 is_null(),is_resource()

PHP有很多资源类型:数据库连接、结果、图像、PDF等

is_resource():判断一个变量是否是一个资源类型

null讲解

@var_dump 有错误可以忽略不在页面显示

null 类型不等于下面任何:

false(布尔值) 0(数字类型) ‘’(字符串)

如何能获得null 三种方法

1、直接赋值$var =nul

2、unset($fp)

3、var_dump搭建源码点我wcqh.cn($emp) $emp 不存在

3. 变量命名

仅允许使用: 英文字母(a-z,A-Z),数字(0-9),下划线(_)或他们的组合不允许使用数字开头必须使用”$”美元符为前缀严格区分大小写驼峰命名法

4. 常量

define(): 函数const: 关键字 固定的值(圆周率), 常量不能重新被定义 或者取消定义 常量的命名前不能加 $ 常量推荐全部大写,多个单词之间用下划线连接_ 变量不属于全局成员, 常量、类、接口、函数属于全局成员 不受作用域限制 5、类常量只能用con搭建源码点我wcqh.cnst定义

常量类型

系统常量 魔术常量 DIR const APP_PATH =/phpEnv/www/chloe.io/0302;echo APP_PATH;define(NATION,中国);echo NATION;printf(国籍:%s, NATION);classUser{//类常量只能用const定义const APP_PATH =/phpEnv/www/chloe.io/0302;}// 常量必须初始化赋值$height;const HEIGHT =183cm;ob_clean();// 系统常量// print_r(get_defined_constants(true));// 魔术常量echo _搭建源码点我wcqh.cn_FILE__;//当前执行PHP脚本的完整路径和文件名, 绝对路径echo dirname(__FILE__);//当前执行PHP脚本的完整路径echo __DIR__;//当前执行PHP脚本的完整路径

5. 全局变量 无法在函数内部直接调用

//系统预定义变量

// 超全局变量: 数组,任何地方都可以访问,不受作用域限制

// $GLOBALS: 引用全局作用域中可用的全部变量

// $_SERVER: 服务器和执行环境信息

// $_GET :通过 URL 参数(又叫 query string)传递给当前脚本的变量的数组

// $_POST:当 HTTP POST 请求的 Content-Type 是搭建源码点我wcqh.cn application/x-www-form-urlencoded 或 multipart/form-data 时,会将变量以关联数组形式传入当前脚本

// $_FILES:通过 HTTP POST 方式上传到当前脚本的项目的数组

// $_COOKIE:通过 HTTP Cookies 方式传递给当前脚本的变量的数组

// $_SESSION:当前脚本可用 SESSION 变量的数组

// $_REQUEST: 默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组

// $_ENV: 通过环境方式传递给当前脚本的变量的数组

流程控制

1. 单一条件分支结构

if (1 == 1) {

ec搭建源码点我wcqh.cnho 111;

}

2.双向条件分支结构 if…else

if(条件表达式)

{ #满足条件执行的代码块

} else{

不满足条件执行的代码块

}

3. 多向条件分支结构

$age =85;$gender =;if($gender ==&& $age <55): echo “您好女士,距离您退休还有”.(55 $age).“年<br>”;elseif ($gender ==&& $age >55): echo “您好女士,您已经退休”.($age 55).“年了<br>”;elseif ($gender ==&& $age <60): echo “先生您好,距离您退休还有”.(60 $age).“年<br>”;elseif ($gender =搭建源码点我wcqh.cn=&& $age >60): echo “先生您好 ,您已经退休”.($age 60).“年了<br>”;else: echo 很抱歉,您输入的信息不正确;endif;ob_clean();$d = date(“w”);//0-6switch($d):case1: echo 今天是工作日星期一;break;case2: echo 今天是工作日星期二;break;case3: echo 今天是工作日星期三;break;case4: echo 今天是工作日星期四;break;case5: echo 今天是工作日星期五;break;default: echo “今天休息!”;endswitch;// break 退出当前循环 conti搭建源码点我wcqh.cnnue 跳过此次循环,进入下一轮循环

php 模版

$nav =;for($i =0; $i < count($navs); $i++){ $nav .=“<a href={$navs[$i][url]} style=padding: 0 15px >{$navs[$i][name]}</a>”;}

js 模版

// 商品信息模板const tr =` <tr> <td><input type=”checkbox” name=”” class=”check” checked /></td> <td>${item.id}</td> <td>${item.name}</td> <td>${item.unit}</td><td clas搭建源码点我wcqh.cns=”price”>${item.price}</td> <td><input type=”number” name=”” value=”${item.num}” min=”1″></td> <td class=”money”>${item.money}</td> </tr> `

运算符

<?php/** * ; php指令分隔符 * php 功能执行语句 必须以;结束 * 结构定义语句 * *///! PHP运算符function demo(){}class demo{}// 算数运算符 + – * / % 去余 // 能被4整除但不能被100整除的都是闰年,其余的年份均为平年$year = date(“Y”);// ec搭建源码点我wcqh.cnho $year;if($year %4==0&& $year %100!==0){ echo “{$year}是闰年”;}else{ echo “{$year}是平年”;}// 控制随机数的范围 0-50// echo mt_rand() % 50;echo mt_rand(0,50);// 比较运算符 返回布尔型 用在流程控制语句 var_dump(11>10);// 逻辑运算符 || && ! 返回布尔型 用在流程控制语句/** * || 或 两边的表达式只要一个为true 返回true * * && 且 两边的表达式全部为true 返回true * * ! * *//** * = 赋值运算符 * == 值比较* ==搭建源码点我wcqh.cn= 严格比较 值 类型 */var_dump(1>0||4>5);var_dump(0===0);$username =admin;if(isset($username)&& $username ===admin){ echo “欢迎管理员{$username}回来”;}$email = $_GET[email];if(isset($email)&& filter_var($email, FILTER_VALIDATE_EMAIL)){ echo 邮箱验证通过;}else{ echo 请输入有效的邮箱;}ob_clean();//三元运算符 表达式 ? :// $pwd = sha1(wwwphpcn);$pwd =iss搭建源码点我wcqh.cnet($pwd)? $pwd :root;// 检测页码// $page = isset($_GET[p]) ? $_GET[p] : 1;// ?? null合并运算符 告别isset() $page =@$_GET[p]??1;echo $page;以前的写法$info = isset($_GET[’email’])? $_GET[’email’]:noemail’;现在直接这样写就可以了$info = $_GET[’email’]?? noemail;

循环

<?php// ! 循环 while$cities =[合肥,南京,杭州,苏州,上海,北京];next($cities);next($cities);ne搭建源码点我wcqh.cnxt($cities);next($cities);reset($cities);// echo current($cities);// while循环 入口判断型循环// while ($city = current($cities)) {// echo $city . <br>;// next($cities);// }// while ($city = current($cities)) :// echo $city . <br>;// next($cities);// endwhile;// do..while出口型判断循环// $i = 0;// do {// echo $citie搭建源码点我wcqh.cns[$i];// $i++;// } while ($i < count($cities));// for 计数型循环 // for ($i = 0; $i < count($cities); $i++) {// // break 提前结束循环 // if ($i > 2) break;// echo $cities[$i];// }// continue 跳出某一轮循环 选择性输出for($i =0; $i < count($cities); $i++){if($i ==2|| $i ==3)continue; echo $cities[$i];}foreach($cities as $k => $v){}

三、 PHP项搭建源码点我wcqh.cn目实例

目录结构

config/common.php 存储各种复杂路径,都用常量表示

data存储是数据

template\public存储是网页头、网页底公共模版,都是用include 引用

static存储js css等

lib/user/check.php 用户登录界面后台验证

lib/user/check.php

<?php// 获取用户登录数据 不能用传统的表单格式提交 ($_POST) , json// json当成文本流原始数据来接收$json = file_get_contents(php://input);// echo $json;// $json并非php能识别的数据类型,它只是json格式搭建源码点我wcqh.cn的字符串而已// json -> php.array , true: 数组$user = json_decode($json,true);// var_dump($user);echo json_encode($user);

config\common.php

<?php// 根路径// date() 格式化一个时间戳// echo date(“Y-m-d”, time());define(DAY, date(/md, time()));define(ROOT_PATH, $_SERVER[DOCUMENT_ROOT]. DAY ./web);// echo ROOT_PATH;// 数据路径define(DA搭建源码点我wcqh.cnTA_PATH, ROOT_PATH ./data);// 模板路径 define(TMPL_PATH, ROOT_PATH ./template);// 公共模板路径 define(TMPL_PATH_PUBLIC, TMPL_PATH ./public);// 静态资源路径define(STATIC_PATH, ROOT_PATH ./static);// cssdefine(STATIC_CSS_PATH, STATIC_PATH ./css);// jsdefine(STATIC_JS_PATH, STATIC_PATH ./js);// imagesdefine(STATIC_IMG_PATH,STATIC_P搭建源码点我wcqh.cnATH./images);

login.php

<!– 引入页眉 –><?php include template/public/header.php?><!– 主体 –><main><!– 用户登录 –><formclass=“login”><table><caption> 用户登录</caption><tbody><tr><td><labelfor=“email”>邮箱:</label></td><td><inputtype=“email”name=“email”id=“email”/></td></tr><tr><td><labelfor=“password”>密码:</label>搭建源码点我wcqh.cn</td><td><inputtype=“password”name=“password”id=“password”/></td></tr><tr><tdcolspan=“2”><buttononclick=doLogin(this)type=“button”>提交</button></td></tr></tbody></table></form><p><ahref=“register.php”>没有帐号,请先注册</a></p></main><script> async function doLogin(obj){// console.log(obj.form.email.value);con搭建源码点我wcqh.cnst email = obj.form.email.value;const password = obj.form.password.value;// 非空验证if(email.length >0&& password.length >0){// 异步提交 fetch APIconst response = await fetch(./lib/user/check.php,{// 请求方法 method:POST,// 请求头 headers:{Content-Type:application/json;charset=utf-8}, body: JSON.stringify({ email, password})});// 解搭建源码点我wcqh.cn析数据const result = await response.json(); console.log(result);}else{ alert(邮箱或密码不能为空);}}</script><!– 引入页脚 –><?php include template/public/footer.php?>

template\public 头部底部模板如下

头部模板<!DOCTYPE html><html lang=“zh-CN”><head><? $arr =requiredata/data.php; $navs =requiredata/nav.php;?><meta charset=“UTF-8”/><meta ht搭建源码点我wcqh.cntpequiv=“X-UA-Compatible” content=“IE=edge”/><meta name=“viewport” content=“width=device-width, initial-scale=1.0”/><meta name=“keywords” content=“<?= $arr[keywords] ?>”/><meta name=“description” content=“<?= $arr[des] ?>”/><link rel=“stylesheet” href=“static/css/style.css”/><title><?= $arr[title]?></tit搭建源码点我wcqh.cnle></head><body><!–页眉–><!–修改php.ini open_short_tag On–><header><nav><a href=“index.php”>首页</a><?foreach($navs as $k => $v):?><a href=“news.php”><?= $v[name]?></a><? endforeach;?></nav></header><!– 页脚 –><footer><div>青狐资源网&copy;版权所有(2022-2025)</div></footer></body></html>

data存储是数组

return[[“id”=>1,name=搭建源码点我wcqh.cn>新闻],[“id”=>2,name=>产品],[“id”=>3,name=>联系],[“id”=>4,name=>登录],];return array(“keywords”=>“新闻,产品,合肥”,“des”=>“专业生产中高档办公家具,行业畅销20年”,“title”=>“首頁”);

首页如下

<!– 引入页眉 –><?php include template/public/header.php?><!– 主体 –><main><!– 新闻列表 –><divclass=“news”><h3>新闻列表</h3><divclass=“list”><ahref=“”>切实做好高风险岗位从业人搭建源码点我wcqh.cn员疫情防控。</a><ahref=“”>切实做好高风险岗位从业人员疫情防控。</a><ahref=“”>切实做好高风险岗位从业人员疫情防控。</a><ahref=“”>切实做好高风险岗位从业人员疫情防控。</a><ahref=“”>切实做好高风险岗位从业人员疫情防控。</a></div></div><!– 产品列表 –><divclass=“items”><h3>产品列表</h3><divclass=“list”><divclass=“item”><imgsrc=“static/images/item1.jpeg”alt=“”/><ahref=“”>最新产品1</a></div><divc搭建源码点我wcqh.cnlass=“item”><imgsrc=“static/images/item2.jpeg”alt=“”/><ahref=“”>最新产品2</a></div><divclass=“item”><ahref=“”><imgsrc=“static/images/item3.jpeg”alt=“”/></a><ahref=“”>最新产品3</a></div><divclass=“item”><imgsrc=“static/images/item4.jpeg”alt=“”/><ahref=“”>最新产品4</a></div></div></div></main><!– 引入页脚 –><?php i搭建源码点我wcqh.cnncludetemplate/public/footer.php?>

重点例子代码

fetch的使用 注意await async

<formclass=“login”><table><caption> 用户登录</caption><tbody><tr><td><labelfor=“email”>邮箱:</label></td><td><inputtype=“email”name=“email”id=“email”/></td></tr><tr><td><labelfor=“password”>密码:</label></td><td><inputtype=“password”name=“password搭建源码点我wcqh.cnid=“password”/></td></tr><tr><tdcolspan=“2”><buttononclick=doLogin(this)type=“button”>提交</button></td></tr></tbody></table></form><script> async function doLogin(obj){// console.log(obj.form.email.value);const email = obj.form.email.value;const password = obj.form.password.value;// 非空验证if(email.length >0&&搭建源码点我wcqh.cn password.length >0){// 异步提交 fetch APIconst response = await fetch(./lib/user/check.php,{// 请求方法 method:POST,// 请求头 headers:{Content-Type:application/json;charset=utf-8}, body: JSON.stringify({ email, password})});// 解析数据const result = await response.json(); console.log(result);}else{ alert(邮箱或密码不能为空);}}</script>后端搭建源码点我wcqh.cn代码<?php// 获取用户登录数据 不能用传统的表单格式提交 ($_POST) , json// json当成文本流原始数据来接收$json = file_get_contents(php://input);// echo $json;// $json并非php能识别的数据类型,它只是json格式的字符串而已// json -> php.array , true: 数组$user = json_decode($json,true);// var_dump($user);echo json_encode($user);
批改老师:PHPz 批改状态:合格 老师批语:
作者最新博文
2021-09-23 09:51:01

© 版权声明
THE END
喜欢就支持一下吧
点赞139 分享
The best things in life are free.
生活中最美好的事都是免费的
评论 抢沙发

请登录后发表评论

    暂无评论内容