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++){echo arr[$x];}

关联数组

  • 有键和值的数组

  • 创建

    • $arr=array{"name"=>"xiaoming","old"=>"20","like"=>"dsafd"};
  • 遍历

    • foreach($arr as x=>vlue){echo 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

$_SESSION

魔术常量

LINE

  • 文件中当前的行号

FILE

  • 文件的完整路径和文件名

DIR

  • 文件所在目录,不包括文件名

FUNCTION

  • 当前所在函数

CLASS

  • 当前所在类

TRAIT

NETHOD

  • 返回方法名

NAMESPACE

  • 返回当前命名空间

命名空间

namespace spacename;

  • 语法格式

命名空间可以像文件夹一样嵌套

  • 防止变量串门

函数

创建函数

  • function 函数名(){需要执行的代码}

带参数的函数

  • function 函数名(变量){需要执行的代码}

带返回值的函数

  • function fun1(){return 1;}

面向对象

  • 定义了一个事物比如狗类,鸟类

对象

  • 类 的实例

成员变量

  • 类内部的变量

成员函数

  • 成员方法,用于访问内部成员变量,或者描述一个类的动作

继承

  • 继承,子类自动继承父类的数据结构和方法机制,在父类的基础上添加或修改适合自己的对象

父类

  • 一个类被其类继承

子类

  • 一个继承其他类为子类,也可以成为派生类

多态

  • 函数或者方法可以作用于多种类型的变量上,获得不同的结果

重载

  • 函数或者方法重名,但是参数不同,(类似重写)

抽象性

  • 属性和行为抽象成类

封装

  • 将一个客体属性与行为绑定

构造函数

  • 主要用来创建对象时初始化对象,给成员变量赋初始值

析构函数

  • 和构造函数相反,用来善后

表单

$_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(临时文件名,文件路径/文件名)
  • 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();发送

原文地址:https://www.cnblogs.com/hwx1999/p/12892520.html