PHP结构
2018-10-08 14:08:09 117 举报
AI智能生成
php
作者其他创作
大纲/内容
变量和常量
变量
定义:以$符号开始,后面跟一个字母或者下划线,然后后边跟任意字母、数字、下划线
例子:$a = 10;
赋值
传值赋值
传址赋值
&符号,两个变量公用一个地址,一个修改,另一个也修改
可变变量
定义:用一个变量的值来当作另一个变量的变量名
$a = 'hello';$$a='world';$hello = 'world';
外部变量
$_GET获取url传参
$_POST获取form表单post方式的传参
$_REQUEST获取get或者post的传参
$_COOKIE获取cookie的值
$GLOBALS全局变量
$_SERVER获取服务器端的信息
$_SESSION获取session的值
静态变量
用static来声明静态变量,静态变量在第一次初始化后就不会再被初始化
在函数中,第一次调用函数被初始化,之后都不会被初始化
类中,类文件加载之后就会被初始化,可以直接通过类名来调用
变量函数
isset()变量是否存在,存在返回true
empty()变量是否为空,这里只能使用字符串,其他类型会报错,为空返回true
unset()删除变量地址,空间被销毁,垃圾回收
常量
定义:定义常量必须要define()方法,常量通常全部大写,以字母下划线开头,后边跟任意字母数字下划线
检测常量是否存在,defined(),
系统常量
PHP_OS获取服务器系统的版本号
PHP_VERSION获取php的版本号
魔术常量
__FILE__ 获取当前php文件的物理路径
__DIR__ 获取当前php文件所在文件夹的物理路径
__LINE__ 获取当前行号
__FUNCTION__ 获取函数名,只能在函数中使用
__CLASS__ 获取当前类的名称
__METHOD__ 获取当前类方法的名称
常量定义时必须赋值,只能赋值标量
输出
echo可以输出一个或者多个字符串或者数字
print只能输出一个字符串或者数字, 有返回值,成功,返1,false,返0.
print_r打印关于变量的易于理解的信息。
printf
var_dump 函数作用是判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型.
运算符
算术运算符
加减乘除模
自增自减运算符
++ --
比较运算符
大于、小于、等于、全等于、全不等于、大于等于、小于等于、不等于(小于大于)
逻辑运算符
与或非
与 and && &
或 or || |
非 !
三目运算符
(条件)? 真返回值 : 假返回值;
赋值运算符
+=加等于,左边的值和右边的值相加,然后赋值给左边
-=减等于,左边的值和右边的值相减,然后赋值给左边
*=乘等于,左边的值和右边的值相乘,然后赋值给左边
/=除等于,左边的值和右边的值相除,然后赋值给左边
%=模等于,左边的值和右边的值相模,然后赋值给左边
=右边赋值给左边
.=点等于,左边的值和右边的值相连,然后赋值给左边
其他运算符
. 用来字符串拼接
函数
自定义函数
函数定义
function 函数名(参数..){代码执行过程}
函数传参
传参传值
传参传址
默认参数
函数返回值
返回值会直接终止函数的运行
变量函数
变量函数,就是把变量的值当作函数的名称来调用
内部函数
函数内部定义函数,只能在函数内部使用
递归函数
函数自己调自己
具体用法自己调着看吧
反正我不会
函数的函数
挂掉程序
die()
exit()
字符串函数
字符串长度
strlen()获取字符串长度,只能是英文的,中文一个utf8编码格式的,占三字节
mb_strlen()获取指定字符编码格式的字符串长度,一个中文占1个字节,函数的第二个参数必须添加字符编码格式,如:utf8
字符串截取
substr($str,$start,$len),从start开始截取,截取长度是len,返回截取出来的字符串
mb_substr($str,$start,$len,$code)中文截取,指定字符串编码,一个中文只占一个字节
trim()去掉左右指定字符串,如果不添加第二个参数就默认去掉空格
ltrim()去掉左边指定字符
rtrim()去掉右边指定字符
字符串查找
strpos($str,$search);从左向右查找指定的字符串,找到返回位置,找不到返回false
strrpos($str,$search);从右向左查找指定的字符串,找到返回位置,找不到返回false
strchr($str,$search)/strstr($str,$search)从左向右查找指定字符串,找到返回从当前位置到结尾的所有字符串
strrchr($str,$search);从右向左查找指定字符串,指定字符串只识别第一个字符,找到返回从当前位置到结尾的所有字符串
字符串替换
str_replace($search,$replace,$str)在str字符串中找到search字符串,替换成replace字符串
字符串转换
strtolower()大写转小写
strtoupper()小写转大写
ucfirst()首字母大写
ucwords()字符串所有单词首字母大写
md5()字符串加密
htmlspecialchars()把html标签转成实体
htmlspecialchars_decode()把html实体标签转回来
addslashes()给单引号双引号反斜杠添加反斜杠,,防止sql注入
urlencode()把url编码加密
urldecode()url编码解密
stripslashes()把addslashes()方法转成的字符串转回来
strip_tags()去掉字符串中所有的html标签,第二个参数指定不去掉哪些
字符串修改
str_pad($str,$len,$pad,$direction)把str字符串填充到指定len长度,如果长度不够才填充,pad是填充的字符串,direction是填充的方向:STR_PAD_RIGHT向右填充,STR_PAD_LEFT向左填充,STR_PAD_BOTH先向右填一个再左填一个直到到指定长度为止
number_format()把数字形式的字符串格式化
explode()用指定字符串把字符串切割成数组
implode()用指定字符串把数组拼接成字符串
数学函数
abs()绝对值
ceil()向上取整
floor()向下取整
max()获取数组的最大值
min()获取数组的最小值
round()四舍五入,第二个参数指定小数点后保留几位
mt_rand()随机返回一个整形,第一个参数指定最小值,第二个参数指定最大值
日期函数
time()获取当前的时间戳
date()把时间戳格式化成日期格式的字符串
strtotime()把日期格式的字符串转成时间戳
要用date必须在php-ini中配置date.timezone=PRC
数组函数
count()获取数组的长度
key()获取当前指针指向的键名
current()获取当前指针指向的value值
next()指针挪向下一位,返回指针指向的value值
prev()指针向上挪一位,返回指针执行的value值
reset()把指针挪到数组的第一位
end()把指针挪到数组的最后一位
array_push()给数组最后添加一个或者多个值,用于索引数组
array_pop()删除数组最后一位
array_unshift()给数组第一位添加一个或者多个值
array_shift()删除数组的第一位
array_merge($arr,$arr1,$arr2,...)合并一个或者多个数组,把所有数组的值赋给第一个参数,如果关联数组后边键名和前边键名相同是会覆盖前边的值
sort()/rsort()不保留键名对键值进行排序
asort()/arsort()保留键名,对键值进行排序
ksort()/krsort()对键名进行排序
array_chunk() 把一个数组分割为新的数组块。用第二个参数把第一个参数的数组切割成,一个二维数组,二维数组的长度就是分割后的长度,二维数组中的每个值都是数组,长度是第二个参数,最后一个数组长度可能不够
文件函数
fopen()加载文件
fread()读取文件
fwrite()写入文件
fclose()关闭文件
is_file()判断文件是否存在,传参文件路径
is_dir()判断路径所在文件夹是否存在
unlink()删除文件
正则函数
preg_match()用正则匹配第二个参数中是否有对应正则表达式的值,有了返回1没有返回0
preg_match_all()用正则匹配第二个参数中是否有对应正则表达式的值,有了返回匹配到的个数,没有返回0,查找到的值,返回到第三个参数中,第三个参数必填
preg_split()用正则表达式把字符串切割成数组,第一个参数正则表达式,第二个参数是字符串
preg_replace($preg,$replace,$str)用正则表达式匹配字符串,找到后用指定的只付出替换
对象
类class
变量
作用范围
public 公有的
所有的都可以使用
private 私有的
只能对象自己使用
protected 受保护的
子类和自己使用
static 静态的
静态变量在类文件被加载时已经初始化成功了,可以直接通过类名来访问。如: $class::test;
final 最终的
子类不可以重写父类的方法和变量
方法
作用范围
public
private
protected
static静态的,在类文件被加载时就初始化成功,可以直接通过类名来调用方法,在静态方法中不可以调用非静态的成员变量
final 最终的,子类不可以重写父类的方法
默认方法
构造方法__construct(),在类被实例化成对象的时候,自动执行
析构方法 __destruct() 在对象生命周期结束前自动执行
抽象类
abstract 抽象的,如过类中有抽象的方法,那么类必须是抽象类。不可以被实例化
抽象类必须通过继承来实现他里边的变量和方法,不能直接被实例化
abstract class test{...类变量和方法}
抽象类中的抽象方法必须是公有的,或者受保护的
接口interface
interface 接口名称 { public function run(); public function eat();}
一个类只能继承一个父类,但是它可以引入多个接口
类引入接口后,必须实现接口定义的方法
接口方法,必须是公有的
对象object
封装: 封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。
继承:继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
多态:多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
PHP的介绍
PHP的定义
超文本预处理器
PHP引擎 zend
PHP语法
XML风格
<?php .... ?>
简短风格
<? ...... ?>
ASP风格
<% ...... %>
javascript脚本风格
<javascript language='php'> .... </javascript>
PHP作用
加载动态页面
和数据库进行交互
生成图片
文件操作
。。。
PHP关于空格的说明
PHP空格只有一个空格起作用,一般是用来使代码看起来整洁,php换行也是不起作用的,用来规整PHP的代码
PHP注释
单行注释 #
单行注释 //
多行注释 /* ..... */ 多行注释,不能嵌套
数据类型
标量
整形
int 有无符号的整数,就是正或者负的整数
浮点数
float 带有小数点的值
字符串
string 单双定界符来定义的值
单引号定义,不解析变量和其他值,只输出字符串
双引号定义,解析变量和其他值,在字符串中可以使用大括号来包裹变量,防止变量解析错误,大括号中可以输出数组的下标的值
定界符定义:以<<<和指定字符开始,然后以指定字符结束,中间可以输出字符串
单双引号使用是注意嵌套
布尔值
boolean true/false
啥为false
整形的0
浮点数的 0.0
字符串的空字符串 '' ""
字符串的'0'
空数组
空(NULL)
复合
数组array
索引数组
下标为整形的值,后边=>执行具体的值
关联数组
下标是字符串(键名),后边跟键值 $key=>$value
多维数组
有关联数组和索引数组混合组成的数组
对象object
类实例化之后就是对象
特殊
资源resource
外部引入的文件,或者数据库连接
空
NULL
流程控制
分支语句
if
switch
循环语句
for
foreach
while
do while
循环控制
break结束循环
continue跳过本次循环
会话
HTTP协议
错误码
错误码1开头
100 Continue
服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求。
101 Switching Protocols
服务器转换协议:服务器将遵从客户的请求转换到另外一种协议。
错误码2开头
200 OK
请求成功(其后是对GET和POST请求的应答文档。)
201 Created
请求被创建完成,同时新的资源被创建。
202 Accepted
供处理的请求已被接受,但是处理未完成。
203 Non-authoritative Information
文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝。
204 No Content
没有新文档。浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。
205 Reset Content
没有新文档。但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容。
206 Partial Content
客户发送了一个带有Range头的GET请求,服务器完成了它。
错误码3开头
300 Multiple Choices
多重选择。链接列表。用户可以选择某链接到达目的地。最多允许五个地址。
301 Moved Permanently
所请求的页面已经转移至新的url。
302 Found
所请求的页面已经临时转移至新的url。
303 See Other
所请求的页面可在别的url下被找到。
304 Not Modified
未按预期修改文档。客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。
305 Use Proxy
客户请求的文档应该通过Location头所指明的代理服务器提取。
306 Unused
此代码被用于前一版本。目前已不再使用,但是代码依然被保留。
307 Temporary Redirect
被请求的页面已经临时移至新的url。
错误码4开头
400 Bad Request
服务器未能理解请求。
401 Unauthorized
被请求的页面需要用户名和密码。
401.1
登录失败。
401.2
服务器配置导致登录失败。
401.3
由于 ACL 对资源的限制而未获得授权。
401.4
筛选器授权失败。
401.5
ISAPI/CGI 应用程序授权失败。
401.7
访问被 Web 服务器上的 URL 授权策略拒绝。这个错误代码为 IIS 6.0 所专用。
402 Payment Required
此代码尚无法使用。
403 Forbidden
对被请求页面的访问被禁止。
403.1
执行访问被禁止。
403.2
读访问被禁止。
403.3
写访问被禁止。
403.4
要求 SSL。
403.5
要求 SSL 128。
403.6
IP 地址被拒绝。
403.7
要求客户端证书。
403.8
站点访问被拒绝。
403.9
用户数过多。
403.10
配置无效。
403.11
密码更改。
403.12
拒绝访问映射表。
403.13
客户端证书被吊销。
403.14
拒绝目录列表。
403.15
超出客户端访问许可。
403.16
客户端证书不受信任或无效。
403.17
客户端证书已过期或尚未生效。
403.18
在当前的应用程序池中不能执行所请求的 URL。这个错误代码为 IIS 6.0 所专用。
403.19
不能为这个应用程序池中的客户端执行 CGI。这个错误代码为 IIS 6.0 所专用。
403.20
Passport 登录失败。这个错误代码为 IIS 6.0 所专用。
404 Not Found
服务器无法找到被请求的页面。
404.0
(无)–没有找到文件或目录。
404.1
无法在所请求的端口上访问 Web 站点。
404.2
Web 服务扩展锁定策略阻止本请求。
404.3
MIME 映射策略阻止本请求。
405 Method Not Allowed
请求中指定的方法不被允许。
406 Not Acceptable
服务器生成的响应无法被客户端所接受。
407 Proxy Authentication Required
用户必须首先使用代理服务器进行验证,这样请求才会被处理。
408 Request Timeout
请求超出了服务器的等待时间。
409 Conflict
由于冲突,请求无法被完成。
410 Gone
被请求的页面不可用。
411 Length Required
"Content-Length" 未被定义。如果无此内容,服务器不会接受请求。
412 Precondition Failed
请求中的前提条件被服务器评估为失败。
413 Request Entity Too Large
由于所请求的实体的太大,服务器不会接受请求。
414 Request-url Too Long
由于url太长,服务器不会接受请求。当post请求被转换为带有很长的查询信息的get请求时,就会发生这种情况。
415 Unsupported Media Type
由于媒介类型不被支持,服务器不会接受请求。
416 Requested Range Not Satisfiable
服务器不能满足客户在请求中指定的Range头。
417 Expectation Failed
执行失败。
423
锁定的错误。
错误码5开头
500 Internal Server Error
请求未完成。服务器遇到不可预知的情况。
500.12
应用程序正忙于在 Web 服务器上重新启动。
500.13
Web 服务器太忙。
500.15
不允许直接请求 Global.asa。
500.16
UNC 授权凭据不正确。这个错误代码为 IIS 6.0 所专用。
500.18
URL 授权存储不能打开。这个错误代码为 IIS 6.0 所专用。
500.100
内部 ASP 错误。
501 Not Implemented
请求未完成。服务器不支持所请求的功能。
502 Bad Gateway
请求未完成。服务器从上游服务器收到一个无效的响应。
502.1
CGI 应用程序超时。 ·
502.2
CGI 应用程序出错。
503 Service Unavailable
请求未完成。服务器临时过载或当机。
504 Gateway Timeout
网关超时。
505 HTTP Version Not Supported
服务器不支持请求中指明的HTTP协议版本。
COOKIE
设置cookie
setcookie(键名, 键值, 过期时间, 服务器端有效路径, cookie有效域名);
读取cookie
$_COOKIE
cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。
数量:每个浏览器都不相同,ie8允许每个域名保存50个cookie,火狐允许每个域名保存50个cookie
大小:一般允许4kb不同浏览器不同版本略有不同
回收:cookie时间到了,自动回收。cookie数量到达上限随机回收或者使用最少的
SESSION
开启session session_start();
session必须开始,不然无法使用
session必须开始,不然无法使用
销毁
手动
session_unset()删除所有的session变量,不删除session文件
session_destroy()删除session文件,释放sessionid,不删除session变量
自动
浏览器关闭自动回收
生命周期结束,自动回收
随机删除,使用次数最少的
设置读取
设置
开启session_start()之后可以通过$_SESSION这个外部变量来设置具体的值,如:$_SESSION['name'] = '王航';
读取
开启session后可以通过外部变量,$_SESSION['name']根据变量的键名来或者对应的值
多少:session理论上是可以存放无限多的,和你的服务器配置有关系
大小:session理论上没有大小限制
0 条评论
下一页