php学习
1、网络请求响应流程
- 浏览器—发起html请求—>服务器
- 浏览器<—响应html请求—服务器
- 浏览器—发起php请求—>服务器—转发—>PHP解释器—操作—>数据库
- 浏览器<—响应html请求—服务器<—返回—php解释器<—返回结果—数据库
2、环境
- wamp : windows+apache+mysql+php
- phpstudy
- 根据系统选择相应软件安装包
3、php基础
- 以“<?php ?>”包裹的代码段,纯PHP文档尾部标签可以不写,和Html混写时,不能省
- php代码可以定在Html文档的任何位置
- php变量必须先声明再使用
- php变更声明后,值为NULL
- 将变量赋值为NULL,即可销毁变量
4、php函数
- echo 输出变量,无返回值
- var_dump() 打印变量类型、长度和值
- unset() 销毁变量,无返回值
- isset() 检测变量是否存在,返回布尔值
- gettype()查询变量类型
- tostring()转换成字符串
- var_export()返回变量的字符串表示,带‘’表示,多用于sql语句定义
- error_reporting(E_ALL)打开所有报错的开关
- empty()检测变量是否为空,和NULL不一样
5、php程序的组成
- 起始标签 <?php ?>
- 注释 //*//
- 代码段 function func(){}
- 语句 *;
6、代码段
- 函数
|—内置函数
|—自定义函数
7、变量
- 变量是临时存储数量的容器,实现数据复用的手段
- 内置变量:系统定义过的变量
- 自定义变量
|—用户设置的变更,命名不可用内置变量名
|—变量名区分大小写,函数不区分大小写
|—变更名$开始,跟字母或下划线开始的字母、下划线和数字的组合
|—中文可以做变更名,但不建议用
|—可变变量,变量值作为另一变量的变量名
8、数据类型
- 基本类型:单值,一个变更对应一个值,标量
|—字符串
|—数值
|—布尔类型 - 复合类型:由基本类型或复合类型组成,一个变更对应一组数据
|—数组 $arr=[‘123’,’abc’,’汉字’,[‘arr’,’数据’]]
|—对象 $obj= new stdClass; $obj->name=’jk’,$obj->age=’18’ - 特殊类型
|—NULL,用is_null()函数检测
|—资源类型,用gettype()检测,返回’resource’
9、变量类型转换
- 自动转换:根据运算需求自动转换成对应的变更类型
|—算术运行符会将运算符前后的变更自动转换成整型,字符串检测开始的数字
|—连接运行符‘.’会将前后的变更自动转换成字符串,然后连接 - 强制转换:只是临时转换,原值不变
|—(int)$str:强制将字符串转换成整型
|—函数转换intval($str),默认转换为十进制,增加参数intval($str,16)换十六进制转换
|—函数转换strval($var),转换成字符串 - 永久转换:
|—settype($str,’integer’),永久转换成整型
10、作用域
- 作用域是变更的生效范围,是查找变量的工具
- 全局作用域:函数作用域之外的空间
- 函数作用域:函数内部定义的变量,作用域在函数内
- 作用域变更:在函数内部声明的变量前加global,则变为全局变量,可以函数内部使用
- 超全局变量:不受作用域范围限制,一般全大写,如$GLOBALS
|—$GLOBALS所有全局变量
|—$GLOBALS[‘username’],访问用户定义的全局变更
11、常量:不受作用域范围限制,一般全大写,不带$,声明时要赋值,不能更新,不能销毁’unset()’
- 常量的声明
|—const SITENAME=”jk1536.com”,用关键字声明一个常量
|—define(‘SITNAME’,’jk1536.com’),用函数声明一个常量
|—在类中,只能用关键字const声明常量- 常量的获取
|—get_defined_constants(),查看系统常量
|—get_defined_constants(true),分级查看系统常量
|—get_defined_constants(true)[‘user’],查看用户设置的常量’user’
|—用函数获取常量 constant(‘APP_PATH’)
|—直接打印常量 echo APP_PATH;
|—常名可以变量化,即用一个变量存储常量名,但此时只能用constant()函数获取
- 常量的获取
- 预定义常量
|—echo ‘PHP版本号:’.’PHP_VERSION’.’<br>‘;
|—echo ‘当前操作系统’.’PHP_OS_FAMILY’.’<br>‘;
|—echo ‘最大整数’.’PHP_INT_MAX’.’<br>‘;
|—echo ‘最大浮点数’.’PHP_FLOAT_MAX’.’<br>‘;
|—echo ‘目录分隔符’.’DIRECTORY_SEPARATOR’.’<br>‘;- 魔术常量,值是变化的
|—echo ‘当前文件’.’FILE‘.’<br>‘;
|—echo ‘当前目录’.’DIR‘.’<br>‘;
|—echo ‘当前行号’.’LINE‘.’<br>‘;
- 魔术常量,值是变化的
12、命名空间
- 用namespace ns {}声明,不加空间名的就是根命名空间namespace{}
- 只要声明了命名空间,所有代码就必须写在命名空间内
- 跨空间调用,就要加上空间路径 \ns**
13、变量过滤器
- 单个变量过滤用 filter_var()
|—filter_var($var,FILTER_VALIDATE_INT),$var为整型时,返回其值,否则返回false
|—filter_var($var,FILTER_VALIDATE_INT,$options),$options=[‘options’=>[‘min_range’=>18,’max_range’=>60]]
|—FILTER_VALIDATE_EMAIL - 多个变量过滤用 filter_var_array()
|—filter_var_array([$a,$b],FILTER_VALIDATE_INT) 外部变量过滤用filter_input()
|—外部变量的来源:表单、cookies、服务器变量、web服务数据、数据库查询结果
|—用于验证GET、POST、PUT等传过来的值的过滤
|—filter_input(‘输入类型get/post’,字符串表示的变更名,过滤器,选项参数)
|—echo ‘id=’.$GET[‘id’];
|—filter_input(INPUT_GET,’id’,FILTER_VALIDATE_INT,$options);- 同时过滤多个外部变量
|—FILTER_SANITIZE_STRING,过滤掉非法字符
$args=[
];'username'=>FILTER_SANITIZE_STRING,
'email'=>FILTER_VALIDATE_EMAIL,
'age'=>['filter'=>FILTER_VALIDATE_INT,'options'=>['min_range'=>18,'max_range'=>60]],
'blog'=>FILTER_VALIDATE_URL,
filter_input_array(INPUT_GET,$args)
- 同时过滤多个外部变量
常用的过滤器函数
序号 | 函数 | 描述 |
---|---|---|
1 | filter_list() | 返回所支持的过滤器列表 |
2 | filter_id() | 返回与某个特定名称的过滤器相关联的id |
3 | filter_var() | 过滤单个变量 |
4 | filter_var_array() | 过滤多个变量 |
5 | filter_has_var() | 检测是否存在指定类型的变量 |
6 | filter_input() | 过滤单个外部变量 |
7 | filter_input_array() | 过滤多个外部变量 |
- 外部变量类型:’INPUT_GET’,’INPUT_POST’,’INPUT_COOKIE’,’INPUT_SESSION’
过滤器分为验证过滤器和清理过滤器
|—验证过滤器|序号|过滤器函数|描述|
|——|————-|—-|
|1|FILTER_VALIDATE_INT|验证整数|
|2|FILTER_VALIDATE_FLOAT|验证浮点数|
|3|FILTER_VALIDATE_BOOLEAN|验证布尔值|
|4|FILTER_VALIDATE_EMAIL|验证邮箱|
|5|FILTER_VALIDATE_URL|验证url地址|
|6|FILTER_VALIDATE_IP|验证IP地址|
|7|FILTER_VALIDATE_REGEXP|正则验证||—FILTER_VALIDATE_BOOLEAN布尔选项的返回值类型
|—返回’true’的情况:’1’,’true’,’on’,’yes’….
|—返回’false’的情况:’0’,’false’,’off’,’no’
|—返回’null’的情况:除过以上情况|—清理过滤器:去掉非法字符,仅保留指定内容
|序号|过滤器函数|描述|
|——|————-|—-|
|1|FILTER_UNSAFE_RAM|保持原始数据|
|2|FILTER_CALLBACK|自定义函数过滤数据|
|3|FILTER_SANITIZE_STRING|去掉标签以及特殊字符:’strip_tags()|
|4|FILTER_SANITIZE_ENCODED|URL-encode字符串,去除或编码特殊字符|
|5|FILTER_SANITIZE_SPECIAL_CHARS|HTML转义字符|
|6|FILTER_SANITIZE_STRIPPED|string过滤器别名|
|7|FILTER_SANITIZE_EMAIL|仅保留合法的email地址|
|8|FILTER_SANITIZE_URL|仅保留合法的url地址|- 选项与标志
|—可以对过滤器设置选项和标志,对数据进行更加精准的过滤处理
|—选项 : ‘options’=>[…]
|—标志 : ‘flags’=>[…]
- 选项与标志