PHP学习-大鹏
2019-12-04 14:52:52 14 举报
AI智能生成
大家学习交流,支持的点赞即可
作者其他创作
大纲/内容
PHP学习
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
索引数组
下标为整形的值,后边=>执行具体的值
关联数组
多维数组
有关联数组和索引数组混合组成的数组
对象object
类实例化之后就是对象
特殊
资源resource
外部引入的文件,或者数据库连接
空
NULL
流程控制
分支语句
if
switch
循环语句
for
foreach
while
do while
循环控制
break结束循环
continue跳过本次循环
变量和常量
变量
定义:以$符号开始,后面跟一个字母或者下划线,然后后边跟任意字母、数字、下划线
例子:$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_r打印关于变量的易于理解的信息。
printf
运算符
算术运算符
加减乘除模
自增自减运算符
++ --
比较运算符
大于、小于、等于、全等于、全不等于、大于等于、小于等于、不等于(小于大于)
逻辑运算符
与或非
与 and && &
或 or || |
非 !
三目运算符
(条件)? 真返回值 : 假返回值;
赋值运算符
+=加等于,左边的值和右边的值相加,然后赋值给左边
-=减等于,左边的值和右边的值相减,然后赋值给左边
*=乘等于,左边的值和右边的值相乘,然后赋值给左边
/=除等于,左边的值和右边的值相除,然后赋值给左边
%=模等于,左边的值和右边的值相模,然后赋值给左边
=右边赋值给左边
.=点等于,左边的值和右边的值相连,然后赋值给左边
其他运算符
. 用来字符串拼接
会话
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.5ISAPI/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.6IP 地址被拒绝。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.20Passport 登录失败。这个错误代码为 IIS 6.0 所专用。404 Not Found服务器无法找到被请求的页面。404.0(无)–没有找到文件或目录。404.1无法在所请求的端口上访问 Web 站点。404.2Web 服务扩展锁定策略阻止本请求。404.3MIME 映射策略阻止本请求。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.13Web 服务器太忙。500.15不允许直接请求 Global.asa。500.16UNC 授权凭据不正确。这个错误代码为 IIS 6.0 所专用。500.18URL 授权存储不能打开。这个错误代码为 IIS 6.0 所专用。500.100内部 ASP 错误。501 Not Implemented请求未完成。服务器不支持所请求的功能。502 Bad Gateway请求未完成。服务器从上游服务器收到一个无效的响应。502.1CGI 应用程序超时。 ·502.2CGI 应用程序出错。503 Service Unavailable请求未完成。服务器临时过载或当机。504 Gateway Timeout网关超时。505 HTTP Version Not Supported服务器不支持请求中指明的HTTP协议版本。
COOKIE
设置cookie
读取cookie
$_COOKIE
cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。
数量:每个浏览器都不相同,ie8允许每个域名保存50个cookie,火狐允许每个域名保存50个cookie
大小:一般允许4kb不同浏览器不同版本略有不同
回收:cookie时间到了,自动回收。cookie数量到达上限随机回收或者使用最少的
SESSION
开启session session_start();session必须开始,不然无法使用
设置读取
设置
开启session_start()之后可以通过$_SESSION这个外部变量来设置具体的值,如:$_SESSION['name'] = '王航';
读取
开启session后可以通过外部变量,$_SESSION['name']根据变量的键名来或者对应的值
销毁
手动
session_unset()删除所有的session变量,不删除session文件
session_destroy()销毁session文件,释放sessionid,不删除session变量
自动
浏览器关闭自动回收
生命周期结束,自动回收
随机删除,使用次数最少的
多少:session理论上是可以存放无限多的,和你的服务器配置有关系
大小:session理论上没有大小限制
函数
自定义函数
函数定义
function 函数名(参数..){代码执行过程}
函数传参
传参传值
传参传址
默认参数
函数返回值
返回值会直接终止函数的运行
变量函数,就是把变量的值当作函数的名称来调用
内部函数
函数内部定义函数,只能在函数内部使用
递归函数
函数自己调自己
具体用法自己调着看吧
反正我不会
函数的函数
挂掉程序
die()
exit()
字符串函数
字符串长度
strlen()获取字符串长度,只能是英文的,中文一个utf8编码格式的,占三字节
mb_strlen()获取指定字符编码格式的字符串长度,一个中文占1个字节,函数的第二个参数必须添加字符编码格式,如:utf8
iconv_strlen() 支持中英混合判断长度
字符串截取
trim()去掉左右指定字符串,如果不添加第二个参数就默认去掉空格
ltrim()去掉左边指定字符
rtrim()去掉右边指定字符
字符串查找
字符串替换
字符串转换
strtolower()大写转小写
strtoupper()小写转大写
ucfirst()首字母大写
ucwords()字符串所有单词首字母大写
md5()字符串加密
htmlspecialchars()把html标签转成实体
htmlspecialchars_decode()把html实体标签转回来
addslashes()给单引号双引号反斜杠添加反斜杠,,防止sql注入
urlencode()把url编码加密
urldecode()url编码解密
stripslashes()把addslashes()方法转成的字符串转回来
strip_tags()去掉字符串中所有的html标签,第二个参数指定不去掉哪些
字符串修改
number_format()把数字形式的字符串格式化
explode()用指定字符串把字符串切割成数组
implode()用指定字符串把数组拼接成字符串
数学函数
abs()绝对值
ceil()向上取整
floor()向下取整
max()获取数组的最大值
min()获取数组的最小值
round()四舍五入,第二个参数指定小数点后保留几位
mt_rand()随机返回一个整形,第一个参数指定最小值,第二个参数指定最大值
rand()随机返回一个数,第一个参数指定最小值,第二个参数指定最大值
日期函数
time()获取当前的时间戳
date()把时间戳格式化成日期格式的字符串
date(\"Y-m-d H:i:s\
获取当前时间date(\"Y-m-d H:i:s\")
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()删除数组的第一位
sort()/rsort()不保留键名对键值进行排序
asort()/arsort()保留键名,对键值进行排序
ksort()/krsort()对键名进行排序
array_chunk() 把一个数组分割为新的数组块。用第二个参数把第一个参数的数组切割成,一个二维数组,二维数组的长度就是分割后的长度,二维数组中的每个值都是数组,长度是第二个参数,最后一个数组长度可能不够
文件函数
单文件操作
fopen()创建或加载文件
fread()读取文件
is_file()判断文件是否存在,传参文件路径
fgets()读取单行文本内容
fwrite()写入文件
unlink()删除文件
fclose()关闭文件
feof()文件结尾
文件夹操作
mkdir()创建文件夹
权限设置
mode=0777
递归创建
recursive=true
is_dir()判断路径所在文件夹是否存在
文件上传
1、页面上传文件
2、读取文件
$_FILES
注意FILES里面对应页面的name
3、移动文件
参数
$filename
临时文件位置
$destination
文件上传目标位置及名称
正则函数
preg_match()用正则匹配第二个参数中是否有对应正则表达式的值,有了返回1没有返回0
preg_match_all()用正则匹配第二个参数中是否有对应正则表达式的值,有了返回匹配到的个数,没有返回0,查找到的值,返回到第三个参数中,第三个参数必填
preg_split()用正则表达式把字符串切割成数组,第一个参数正则表达式,第二个参数是字符串
面向对象
思想介绍
传统的面向过程的编程思想:
将要实现的功能描述为一个从开始到结束的连续的“步骤(过程)”。
依次逐步完成这些步骤。如果步骤较大,又可以将该步骤再次细分为子步骤,以此类推。
程序从头开始执行一直到结尾并得到所需结果。
例子:完成来“报名学习”这件事,可以这样来实现:
第一步,学生提出要报名,并提供姓名和照片
第二步,咨询老师接收照片并登记学生姓名
第三步,学生缴费(付款到学校账号)并获得缴费凭证
第四步,咨询老师验证凭证并分配班级
第五步,最终结果为:报名完成,学生可以在规定的时间到规定的班级(教室)上课,数据库中就有了该学生的信息。
现代的面向对象的编程思想:
将要实现的功能描述为一个“对象/物体”完成的任务——现实中也是如此:功能的实现都是依赖于一个实体的“行动/操作/动作”。
完成该最终功能的过程中需要实现其他中间功能(过程),则再去调用其它对象(或也可能是自己本身)来实现该中间功能。
整个系统的完成(功能的实现)看作是一个一个对象在发挥其各自的“能力”并在内部进行协调有序的调用过程。
例子:完成来“报名学习”这件事,可以这样来处理:
学生对象:有姓名有照片,有所属班级,能“提出报名”,能“缴费”
咨询老师对象:能接收照片并登记姓名,能分配班级。
班级对象:有班号,有开班日期,有教室。
基本概念
类与对象
类
类是描述一类事物的一个总称,是具有相同特征特性的该类事物的一个通用名字(称呼);
比如人就是一个类(人类),狗也是一个类(狗类),它们又属于一个更大的类(哺乳类),桌子,手机,书都是一个类;
一个类决定了一个对象所具有的所有特征特性信息,比如我是人类,则我有:姓名,性别,年龄,我还能吃饭,走路,说话。
语法上,一个类内部可以具有自己的“变量”和“函数”,但此时在技术术语上就对应地称为“属性”和“方法”。一个类也可以有自己的常量。这些属性,方法和常量就都称为“类”的“成员”。
对象
对象是一个明确的具体的“物体”,是某个类中的一个“实物”(相对来说,类就是一种抽象的泛称)。对象离不开类,或者说,对象一定隶属于某个类——有类才有对象,先有类再有对象。
比如“黄晓明”就是“人”这个类的一个具体对象,“阿黄”是“狗”这个类的一个具体对象。
一个对象的所有特征特性信息,都是由其所属的类决定的,但每个对象又很有可能有自己不同的特征特性信息,比如有个对象的名字叫吴六奇,性别男,会写程序,另一个对象可能叫章子怡,性别女,会演戏。
类的定义
类中属性property
类中方法method
对象创建与使用
对象的创建
就是由一个类“创建”出一个具体的“物体”——专业说法就是对象。
new 类名();//标准写法new 变量名(); //该变量的内容是一个表示类名的字符串。new self; //用于在类的方法内部创建一个该类对象。类名::getNew();//定义类的一个静态方法用于获取该类的一个对象
对象的使用
操作属性
$obj->name
使用属性,就可以当作一个变量看待。
操作方法
$obj->run();
使用方法,就可以当作一个函数看待。
类class
属性(变量)
作用范围
public 公有的
所有的都可以使用
private 私有的
只能对象自己使用
protected 受保护的
子类和自己使用
static 静态的
一个仅仅隶属于(依附于)类的属性,其是通过类名直接来取用的。
静态变量在类文件被加载时已经初始化成功了,可以直接通过类名来访问。如: $class::test;
定义形式:[访问修饰符] static $静态属性名 [ = 初值];访问修饰符省略则默认为public,初值也应该是直接值或常量
final 最终的
子类不可以重写父类的方法和变量
const 常量
一个仅仅隶属于(依附于)类的常量,其是通过类名直接来取用的
定义形式
const 常量名 = 初值;//必须赋初值
使用形式
类名::常量名;其中类名也可以用该类的对象名,一个内容为该类名的字符串变量名,self等来代替。
对象名->属性名;
属性是可读可写的(可取值赋值)。
方法(函数)
含义
方法就是定义在类中的函数
该方法是需要通过对象来调用。
修饰符
public
private
protected
static
final
static静态
在类文件被加载时就初始化成功,可以直接通过类名来调用方法,在静态方法中不可以调用非静态的成员变量
[访问修饰符] static function $静态方法名(...){ ...... }
类名::静态方法名(...);其中类名也可以用该类的对象名,一个内容为该类名的字符串变量名,self等来代替。
注意事项
注意1:$this在静态方法中不能使用。
注意2:静态方法中不应调用非静态方法。
注意3:self关键字:用在方法中,表示该方法所在的类。
注意4:static关键字:代替self关键字的位置,除了具有self作用外,还具有更灵活的作用,那就是所谓“后期静态绑定”。
final 最终的
子类不可以重写父类的方法
默认方法
也可以在当前类的构造方法中调用父类的构造方法:parent::__construct();
析构方法 __destruct() 在对象生命周期结束前自动执行
对象销毁
脚本程序运行结束,自动销毁;
明确地unset()一个对象变量,则被销毁;
改变对象变量的值,被销毁;
获取$this的所属类:get_class($this)
封装
封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。
get/set
继承
基本含义
类是用来描述现实世界中同一种事物的共有特性的抽象模型。但现实世界中,不同种类的事物之间有往往有一些上下级或大小范围的关系。比如,动物是一个“类”,具有某些特性。但脊椎动物也是一个类,也具有一些特性,且同时具有动物类的所有特性。哺乳动物还是一个类,具有一些特性,并同时具有脊椎动物的所有特性。如此等等,则面向对象编程中,我们定义的类也同样可以具有类似的关系特征,这就是类的继承。
继承:一个类从另一个已有的类获得其特性,称为继承。
派生:从一个已有的类产生一个新的类,称为派生。
父类/子类:已有类为父类,新建类为子类。
单继承:一个类只能从一个上级类继承其特性信息。PHP和大多数面向对象的语言都是单继承模式。C++是多继承。
扩展:在子类中再来定义自己的一些新的特有的特性信息(属性,方法和常量)。没有扩展,继承也就没有意义了。
关键词
extends
继承关键词,前面写子类 后面写父类
parent
在类的内部用来表示(代表)该类的父类。可以用来访问父类的属性或方法或常量。
重写override
什么是重写?重写又叫“覆盖”,就是将从父类继承下来的属性或方法重新定义。只有保护的或公有的属性或方法能够被覆盖。
为什么要重写?因为父类的某个属性可能对于子类来说不够具体或详细,子类想要同样特性或功能的更准确或详细信息。
重写的基本要求:访问控制权限,方法的参数形式。
私有属性和私有方法的重写问题:私有属性和方法都不能覆盖,但其实子类可以定义跟父类私有的同名属性或方法。只是当作一个自身的新的属性或方法来看待而已。不过方法的参数必须一致。
构造方法的重写问题:构造方法不但可以像其他普通方法一样重写,而且,比普通方法更宽松:重写的时候参数可以不一致。
抽象类
abstract
抽象类,就是一个不能被实例化的类
如果类中有抽象的方法,那么类必须是抽象类。
定义
abstract class test{...类变量和方法}
用处
定义一些公共的类、方法
比如一些较难的东西
组长规定你要完成的一些任务(方法)
抽象类必须通过继承来实现他里边的变量和方法
抽象类中的抽象方法必须是公有的,或者受保护的
接口interface
interface 接口名称 { public function run(); public function eat();}
一个类只能继承一个父类,但是它可以引入多个接口
类引入接口后,必须实现接口定义的方法
接口方法,必须是公有的
多态
多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
命名空间namespace
用途
用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
namespace
命名空间通过关键字namespace来声明
__NAMESPACE__
魔术变量 获取当前命名空间值
namespace MyProject\\Sub\\Level;
声明分层次的单个命名空间
use
使用命名空间:别名/导入
特别注意
命名空间一般与文件夹相同,为了方便自动导入(include)文件
所有未定义命名空间的类,都由\\表示,或者不写
命名空间一定要写在文件的第一行
代码
其他相关技术
类的自动加载
概念
当在php的代码中的某一行,使用一个类的时候,但该类却还“不存在”的时候,就会去调用某个函数,在该函数中可以去加载要加载的类文件,以实现类的自动加载。
实现方法
__autoload()
常规自动加载函数
预先定义该函数,则代码中,需要一个类却还没有的时候,就会自动调用该函数。我们只要在此时“设法”加载对应的类文件,就可以了!
自动加载的注意事项:1,通常,我们将类文件取名为跟类名有关的并且有规律性的名字,比如文件名为:类名.class.php2,类文件中,只包含一个类的定义语句,不要有其他。3,类文件通常都集中统一放置在一定的目录中,比如class,比如lib,比如inc。
spl_autoload_register();
自定义自动加载函数
常规的自动加载,只能利用__autoload()这一个函数,但是在多人合作开发中,有时并不方便。我们还可以来自定义自动加载函数,每个自动加载函数都可以“各负其责”,来加载某个特定目录(频道)中的类文件。
对象的复制(克隆)
虽然我们知道,对象变量之间,即使使用值传递,比如:$obj2 = $obj1;也并没有像其他普通数据一样,变成“2份”,而只是“对象的编号数据”变成了2份。
$obj2 = clone $obj1;
对象的遍历
foreach语法,还能够对“对象”数据,进行遍历——注意:其只能遍历“可访问的属性”;
PHP内置标准类
php内部,有一个现成的“类”,名字为“stdclass”,被称为“标准类”;
可见,这个对象内部“什么都没有”。它通常用作其他类型的数据转换为“对象”时的“模板类”
与类有关的魔术常量
__METHOD__:表示当前方法的方法名;
与类有关的魔术方法
类系统函数
class_exists():判断某个类是否存在interface_exists():判断某个接口是否存在get_class($对象):获得一个对象的所属类get_parent_class($对象): 获得一个对象的所属类的父类get_class_methods(类名):获得一个类的所有方法名,结果是一个数组get_class_vars(类名):获得一个类的所有属性名,结果是一个数组 get_declared_classes():获得所有类名;
对象系统函数
is_object():判断是否是对象类型
get_object_vars($对象):获得一个对象的所有属性(不含静态属性)
MySQL
Mysqli(传统)
流程
连接数据库
$conn
设置编码
SET NAMES utf8
创建SQL
查询
select
抓取数据
mysqli_fetch_row
mysqli_fetch_assoc
执行SQL
传参数
PDO(面向对象数据编程)
PDO介绍:
连接MySQL数据库:
DSN = \"mysql:host=服务器地址/名称;port=端口号;dbname=数据库名\
执行sql语句
执行所有sql语句:query(sql)
执行无返回数据集的sql语句:exec(sql)
释放资源
$pdo = null;$result->closecursor();
pdo对象的其他常见操作
$pdo->lastInsertId();$pdo->beginTransaction();$pdo->commit()$pdo->rollBack();$pdo->inTransaction();$pdo->setAttribute(属性名,属性值);
错误处理方式
错误模式:
这是pdo的默认模式,可以获取pdo最后一次发生的错误信息。
$pdo->errorCode();$pdo->errorInfo();
异常模式:
PDOStatement(PDO结果集)对象
常用方法
$stmt = $pdo->query(“select ...... ”);//这是获得结果集
$stmt->rowCount() ;
$stmt->columnCount() ;
$stmt->fetch( [返回类型] ); //返回类型常用的有:
PDO::FETCH_ASSOC:表示关联数组PDO::FETCH_NUM:表示索引数组PDO::FETCH_BOTH:表示前二者皆有,这是默认值PDO::FETCH_OBJ:表示对象
$stmt->fetchAll([返回类型]);
$stmt->fetchColumn( [$i] );
$stmt->fetchObject();
$stmt->errorCode();
$stmt->errorInfo();
$stmt->closeCursor();
预处理语句
语法一:$sql = \"select * from tab1 where f1 = :val1 and f2 >:val2\"; //命名参数形式语法二:$sql = \"select * from tab1 where f1 = ? and f2 >?\
0 条评论
下一页