PHP笔记
PHP
语法
结束
变量
- 以$字符开始的
输出
-
echo
- 可以输出一个或多个字符串
-
print
- 只能输出一个字符串,返回值是1
-
EOF
- echo <<<EOF
数据类型
-
字符串
-
String
- $str="teststr";
-
-
整型
-
int
- $a=12;
-
-
浮点型
-
float
- $b=1.3212;
-
-
布尔型
-
boolean
- $c=true;
-
-
数组
-
array
- $arr=array("a","b","c");
-
-
对象
-
object
- class oj{$obj; function set_obj($obj){this.obj=obj;}}
-
-
空值
-
null
- $x="adsf";$x=null;echo $x;
-
类型比较
-
==
- 松散比较,只比较值
-
===
- 严格比较,比较值和数据类型
常量
-
define
-
define(常量名,常量值,是否区分大小写)
- 第三个不填写默认区分大小写默认Flase区分
-
字符串
创建字符串
- $str="test hello world"; $str1="asdfa";
并置字符串
- echo $str.$str1;
求字符串长度
-
echo strlen($str);
- 返回一个整数
查找
-
echo strpos(字符串,需要查找的子串);
- 如果有返回一个整数位置,如果没有就返回false
选择结构
if
-
if(条件)
-
if……else
- if(条件){成立执行}else
-
if……elseif……
- if(条件1){条件1成立执行}elseif(条件2){条件2成立执行}else
switch
-
switch(参数){case 如果值和参数值相同:执行;break;case:如果值和case1不一样判断这里:执行;break;default:如果都不相同执行这里;
-
case
- 后面用来猜参数的值,如果值相同继续执行如果不同就往下一个case判断
-
break
- 如果没有这个,假设case1的时候成立执行完了还会继续往下执行下一个case后面的语句;
-
default
- 如果所有的语句都不成立就执行这个,常常放在结尾
数组
数值数组
-
创建
- $arr=array{"asld","dslf",2,23};
-
调用
-
$arr[1]
- $数组名[下标];下标由0开始计算
-
-
获取数组长度
-
count
- echo count($arr);
-
-
遍历数组
- for($x=0;x<count($arr);x++)
关联数组
-
有键和值的数组
-
创建
- $arr=array{"name"=>"xiaoming","old"=>"20","like"=>"dsafd"};
-
遍历
- foreach($arr as x=>vlue)
多维数组
- 由多个一维数组组成
数组排序
-
sort()
- 升序
-
rsort()
- 降序排序
-
asort()
- 根据关联数组的值升序
-
ksort()
- 根据关联数组的键升序
-
arsort()
- 根据关联数组的值降序
-
krsort()
- 根据关联数组的键降序
循环结构
while
- while(条件)
do……while
- do{需要执行的代码}while(条件);
for
- for(初始值;条件;增量)
foreach
- foreach(数组名 as 变量)
超全局变量
$GLOBALS
- 全局变量数组
$_SERVER
- 包含信息头,路径脚本位置等信息的数组
$_REQUEST
- 用于收集表单数据,和GET和POST方法一样
$_POST
- 表单收集
$_GET
- 表单收集
$_FILES
$_EVN
$_COOKIE
$_SESSION
魔术常量
LINE
- 文件中当前的行号
FILE
- 文件的完整路径和文件名
DIR
- 文件所在目录,不包括文件名
FUNCTION
- 当前所在函数
CLASS
- 当前所在类
TRAIT
NETHOD
- 返回方法名
NAMESPACE
- 返回当前命名空间
命名空间
namespace spacename;
- 语法格式
命名空间可以像文件夹一样嵌套
- 防止变量串门
函数
创建函数
- function 函数名()
带参数的函数
- function 函数名(变量)
带返回值的函数
- function fun1()
面向对象
类
- 定义了一个事物比如狗类,鸟类
对象
- 类 的实例
成员变量
- 类内部的变量
成员函数
- 成员方法,用于访问内部成员变量,或者描述一个类的动作
继承
- 继承,子类自动继承父类的数据结构和方法机制,在父类的基础上添加或修改适合自己的对象
父类
- 一个类被其类继承
子类
- 一个继承其他类为子类,也可以成为派生类
多态
- 函数或者方法可以作用于多种类型的变量上,获得不同的结果
重载
- 函数或者方法重名,但是参数不同,(类似重写)
抽象性
- 属性和行为抽象成类
封装
- 将一个客体属性与行为绑定
构造函数
- 主要用来创建对象时初始化对象,给成员变量赋初始值
析构函数
- 和构造函数相反,用来善后
表单
$_GET和$_POST
- 使用这两个变量以键值对的方式获取到对应表单标签的值
- 如果是对选菜单就利用键值对获取一个数组
- 单选按钮获取的是一个布尔值
考虑安全性
- action=""
- 加入属性
$_REQUEST
- 可以替代$_GET和$_POST
- 个人认为考虑代码兼容性
高级
多维数组
- 数组内部嵌套数组
日期
-
语法
- date(设置时间格式,设置时间点[默认当前时间])
包含
-
include
- 对文件不是很依赖,发生错误继续执行
-
require
- 对文件非常依赖,发生错误结束脚本
文件
-
打开文件
-
$file=fopen("路径/.文件名","打开方式")
-
文件打开方式
- r(只读)
- r+(读/写)
- w(只写)
- w+(读写)
- a(追加)
- a+(读/追加)
- x(只写)
- x+(读/写)
-
-
关闭文件
- fclose($file)
-
if(feof($file))echo "文件结尾";
文件上传
-
通过$_FILES["对应表单标签的name"]["关于文件的信息"]
-
关于文件的信息
- name(文件名)
- type(文件类型)
- size(文件大小)
- tmp_name(临时文件名)
- error(文件上传的错误代码
-
保存临时文件
- move_uploaded_file(临时文件名,文件路径/文件名)
Cookie
-
setcookie()
- 设置cookie函数(必须在html前)
- 语法:setcookie(cookie名,cookie值,销毁时间(日期格式),path,domain)
-
使用$_COOKIE["cookie名"]即可取用
-
把cookie时间设置为过去时间即可销毁
session
-
建立于标签前
- session_start(); 启动会话
E_mail
错误处理
-
基本的错误处理函数:die()函数
- 接管系统错误,给用户提供友好的错误提示
-
自定义错误处理器:error_function(level,message,file,line,context)
-
level:必须,设置规定错误报告级别,必须是数字设置错误级别
-
2:E_WARING
- 非致命的run-time错误,
-
8:E_NOTICE
- run-time通知,可能有错误但是可以运行
-
256:E_USER_ERROR
- 致命错误,类似于trigger_error()设置的E_ERROR
-
512:E_USER_WARNING
- 非致命生成的警告,类似E_WARNING
-
1024:E_USER_NOTICE
- 用户生成通知,类似E_NOTICE
-
4096:E_RECOVERABLEW_ERROR
- 可捕获的致命错误,类似E_ERROR,但可被用户定义的处理程序捕获
-
8191:E_ALL
- 所以错误警告
-
-
message:必须,为用户定义的错误规定错误消息
-
file:规定错误发生的文件名
-
line:规定错误发生的行号
-
context:规定一个数组,包含了当错误发生时再用每个变量以及值
-
异常处理
-
Try
- 使用异常的函数应该位于"try"代码块内.如果没有触发异常,则代码将照常执行.异常被触发会抛出一个异常
-
throw
- 规定如何触发异常,每一个"throw"必须对应至少一个"catch"
-
catch
-
捕获异常,并创建一个包含异常信息的对象
- catch (customException $e)
-
过滤器
-
用于验证和过滤来自非安全数据来源的数据,比如用户的输入
- 来自表单的数据
- cookies
- web services data
- 服务器变量
- 数据库查询
-
函数和过滤器
-
filter_var()
- 通过一个指定的过滤器来过滤单一变量
-
filter_var_array()
- 通过相同的或者不同的过滤器来过滤多个变量
-
filter_input
- 获取一个输入变量,并对它进行过滤
-
filter_input_array
- 获取多个输入变量,并通过相同或不同的过滤器对他们进行过滤
-
-
高级过滤器
JSON
-
编码解码JSON对象
-
json_encode() 对变量进行JSON编码
-
string json_encode($value[,$options=0])
- value 要编码的值,只对UTF-8编码的数据有效
- options 由以下常量组成的二进制掩码
-
-
json_decode() 对JSON格式的字符串进行解码,转化成PHP变量
-
mixed json_decode ($json_string [,$assoc = false [, $depth = 512 [, $options = 0 ]]])
- json_string 待解码的JSON字符串,必须是UTF-8编码数据
- assoc 当参数为true时,返回数组,false:返回对象
- depth 整数类型的参数,指定递归深度
- options 二进制掩码,目前只支持JSON_BIGINT_AS_STRING
-
-
json_last_error() 返回最后发生的错误
-
MySQL
连接数据库
-
MySQLi
- $连接名 = new mysqli(连接地址,用户名,密码,数据库(可选),端口(可选))
- $连接名->close() 关闭数据库连接
-
PDO
-
$连接名 = new PDO("mysql:host=$servername;dbname=$dbname",$username,$passwd)
- mysql:数据库名
- $servername:数据库地址
- $dbname:数据库名
- username:用户名
- passwd:密码
-
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);设置PDO错误模式为异常
-
插入数据
-
mysqli
- 写一条sql插入语句
- 用mysqli_query($连接,$sql语句字符串);发送到数据库执行
- 判断返回的值
-
PDO
- 连接到对应的数据库
- 写一条sql语句
- 用$连接->exec($SQL语句);发送到数据库
- 需要接收异常然后抛出
预处理语句
-
创建sql语句模板发送到数据库,预留的值使用参数'?'标记
- insert into myguests(firstname,lastname,email) values(?,?,?)
-
mysqli
-
预处理及绑定
-
$stmt = $conn->prepare("数据库语句,参数用'?'代替)
- 相当于预先写好一个模板用一个函数赋值给一个变量
-
$stmt->bind_param("ss...",参数1,参数2,...)
-
第一个参数为后面传参的数据类型
- i:整型
- d:双精度浮点型
- s:字符串
- b:二进制大对象
-
第二个参数为后面传参的变量
-
-
后续对传入参数的变量进行赋值即可
-
然后用$stmt->execute();发送到数据库服务器即可
-
$stmt->close();先关闭
-
然后关闭数据库连接
-
-
-
PDO
-
需要抛异常
-
连接数据库后设置参数$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email)
VALUES (:firstname, :lastname, :email)") -
绑定:
- $stmt->bindParam(':firstname',$firstname);
-
修改对应变量内容然后:$stmt->execute();发送到对应数据库即可
-
最后设置连接为null
-
读取数据
-
mysqli
- 先连接数据>使用$连接变量->query($sql语句)>利用变量接收返回的数组(键值对
- 如果接收的条目为多个数据值
- 利用$接收变量->fetch_assoc()函数转换称为关联数组
-
PDO
- 新建连接>设置PDO错误模式
- $连接名->prepare("sql语句");
- $stmt->execute();发送
- $接收变量=$stmt->setFetchMode(PDO::FETCH_ASSOC);设置结果集为关联数组
AJAX
通过发送JavaScript请求局部更新页面
- JavaScript以表单方式发送数据到服务器>服务器PHP处理数据并且返回
window.XMLHttpRequest:区分IE5-6
-
xmlhttp = new XMLHttpRequest();新建一个http请求
- xmlhttp = new ActiveXObject("microsoft.XMLHTTP");IE5-6
-
xmlhttp.onreadystatechange=function(){}:readyState属性改变调用此函数
-
xmlhttp.readyState:状态
- 0:请求未初始化
- 1:服务器连接已建立
- 2:请求已接收
- 3:请求已处理
- 4:请求已完成且响应已就绪
-
xmlhttp.status:状态
- 200:"OK"
- 404:未找到页面
-
-
xmlhttp.open("提交方式","PHP文件名.php?q="+提交的参数,true);
-
xmlhttp.send();发送