• PHP知识点


    1.变量
      ①变量以$符号开始,后跟变量名
      ②以下划线或字母开头
      ③不能包含特殊符号
      ④区分大小写


    2.变量作用域
      ①local
      ②global
      ③static
      ④parameter


    3.函数外定义的变量为全局变量,是可以在除函数中任何地方访问的。在函数里访问要加global修饰
    例如:
    function myTest()
    {
       global $x,$y;
       $y=$x+$y;
    }
    也可以将变量放于globals集合中,直接用来更新全局变量


    4.Static作用域
      当希望某个局部变量可以重复使用时static修饰
    例如:
    function show()
    {
           static $x=0;
           echo $x;
           $x++;
    }
    show();
    show(); //返回12,该变量将会保留着函数前一次被调用时的值。


    5.parameter参数作用域


    6.echo和print
      ① -可以输出一个或多个字符串   ,号间隔的多参
      ② -输出一个字符,多参报错  成功后返回true


    7.数据类型  
    String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)

    var_dump() 函数返回变量的数据类型和值  (注意是类型和值)


    8.对象
      ①PHP中,对象必须声明
      ②class关键字声明类对象,类可以包含属性和方法
      ③在实例化的类中使用数据类型


    9.NULL值用来清空变量数据,或比较


    10.常量
      ①常量用define()函数修饰
      ②常量被定义后,不能再被修改
      ③任何地方可以使用,常量是全局的,函数内也可以使用
    语法:bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
    参数:name表示常量名称,必选。value表示常量的值,必选。case_insensitve表示大小写敏感度


    11.并置运算符(.)用于吧两个字符串连接起来


    12.strlen()函数  -返回字符串的长度  //中文占三个字符
    例如: 可以使用 mb_strlen 设置指定编码输出中文字符个数:
    echo mb_strlen("中文字符",'utf-8');  // 输出 4


    13.strpos()函数  -用于查找字符串的长度 insertof 返回值true/false


    14.算术运算符,赋值运算符,递增/递减运算符(++i i++),比较运算符,逻辑运算符,数组运算符,三元运算符,组合比较符


    例如:=  +=  -=  *=  /=  %=  .=  计算完并赋值

    $a = "Hello";
    $b = $a . " world!";
    echo $b; // 输出Hello world! 
     
    $x="Hello";
    $x .= " world!";
    echo $x; // 输出Hello world! 


    例如:组合比较符(太空船运算符)
    // 整型
    echo 1 <=> 1; // 0 左右相等返回0
    echo 1 <=> 2; // -1 左小返回-1
    echo 2 <=> 1; // 1 左大返回1
     
    // 浮点型
    echo 1.5 <=> 1.5; // 0
    echo 1.5 <=> 2.5; // -1
    echo 2.5 <=> 1.5; // 1
     
    // 字符串
    echo "a" <=> "a"; // 0
    echo "a" <=> "b"; // -1
    echo "b" <=> "a"; // 1
    在没有太空船运算符的时候,我们只能这样写代码  $c = $a > $b ? 1 : ( $a==$b ? 0 : -1 );

    15.=>相当于:冒号


    16.PHP_EOL换行符 isset()函数表示判断是否已设置并且非NULL   返回true/false


    17.or和||有区别  注意


    18.获取数组长度  count() for($x=0;$x<count($arry);$x++)


    19.foreach遍历数组
    例如:foreach (array_expression as $value)
        statement
                  foreach (array_expression as $key => $value)
        statement


    20.数组排序
    sort()对数组升序排列
    rsort()对数组降序排列


    21.php超级全局变量
    $globals  包含全部变量的全局组合数组,变量名字是数组的键
    $_server  用于查看项目信息
    $_request 用于手机表单提交信息
    $_post    表单提交方式  method=post
    $_get     表单提交方式  method=get
    $_files   文件
    $_env     环境变量
    $_cookie  本地记录
    $_session 会话


    22.冒泡排序
    例如:
    $arry=array(2,5,1,8,7);


            for($i=0;$i<count($arry)-1;$i++){


                for($j=0;$j<count($arry)-$i-1;$j++){
     
                    if($arry[$j]<$arry[$j+1]){


                    $item=$arry[$j];
      //注意
                        $arry[$j]=$arry[$j+1];


                        $arry[$j+1]=$item;


                    }
     
                }
     
            }
            
    print_r($arry);


    23.魔术变量,可以实时查看信息
    例如:
    echo '这是第 " '  . __LINE__ . ' " 行';  //line代表当前行号
    echo '这是第 " '  . __FILE__ . ' " 行';  //返回文件路径和名称
    echo '这是第 " '  . __DIR__ . ' " 行';   //返回目录
    echo '这是第 " '  . __FUNCTION__ . ' " 行';  //返回函数名称
    echo '这是第 " '  . __CLASS__ . ' " 行';  //返回类名

    (注意)__Trait__Trait 名包括其被声明的作用区域。


    24.定义命名空间 namespace 名称,命名空间必须是程序脚本的第一条语句


    25.OOP 面向对象 (对象的行为  对象的形态  对象的表示)
    类: 定义了一件事物的抽象特点,累的定义包含了数据形式以及数据的操作
    对象: 类的实例
    成员变量: 定义类内部的变量,该变量的值对外是不可见的,但是可以通过成员函数访问,类被对象后,变量为对象属性
    成员函数: 定义在类的内部,可用于访问对象数据
    继承: 继承性在父类基础上来进行 extends
    多态: 方法有多种不同实现
    重载: 在同一类中,参数名相同,参数列表不同的方法
    构造函数: 初始化对象调用的方法
    析构函数: 销毁对象调用的函数


    类的变量用var来声明,也可初始化
    初始化函数用function __函数名
    parent::__construct()调用父类构造函数


    26.定义变量并默认设置为空值
    $name = $email = $gender = $comment = $website = "";

    27.表单提交
    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
    htmlspecialchars()函数把一些预定义的字符串转换为HTML实体


    28.PHP empty()函数 bool empty( mixed var )
      例子:<?php
    $var = "";
    if(empty($var)){
       echo '变量 $var 为空';
    } else {
       echo '变量 $var 不为空';
    }
    ?>


    29.正则验证  pre_match("正则",变量);如果匹配返回true  不匹配返回false
    "/([\w\-]+\@[\w\-]+\.[\w\-]+)/"  邮箱格式

    "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i"    URL地址格式


    30.请求
    ①.method="get"   
    1.参数和值对显示在地址栏中
    2.get请求值不能超过2000字符3.
    不适合大型变量,不推荐使用


    ②.method="post"
    1.发送信息不可见
    2.携带内容不限制大小


    31.多维数组包含一个或多个数组的数组或者自动分配ID键的多维数组 <pre>自动划分行
    例如:$sites = array(
    "arry1"=>array
    (
    "php基础入门"
    ),
    "arry2"=>array
    (
    "java基础入门"
    )

    )


    32.date()函数 函数可把时间戳格式化为可读性更好的日期和时间
    时间戳是一个字符序列,表示一定事件发生的日期/时间


    语法:string date(string $format[,int $timestamp])
    format 必需。规定时间戳的格式
    timestamp 可选。规定时间戳。默认是当前的日期和时间


    date()格式化日期 可用的字符(d-代表月中的天(01-31),m-(代表月01-12),Y-代表年(四位数))

    33.PHP中include和require语句,用于在执行流中插入写在其他文件中的有用代码
    语法:
    include 'filename';
    require 'filename';


    区别:生成错误不同
    require生成一个致命错误,错误发生,程序停止运行
    include生成一个警告,在错误发生后脚本会继续执行

    注意:如果您希望继续执行,并向用户输出结果,即使包含文件已丢失,那么请使用 include。否则,在框架、CMS 或者复杂的 PHP 应用程序编程中,请始终使用 require 向执行流引用关键文件。这有助于提高应用程序的安全性和完整性


    34.文件处理
    fopen()函数用于打开文件
    $file=fopen("welcom.txt","r"); //第一个参数是绝对路径,例如D:/read.txt
    例:
    <?php
    $file = fopen("welcome.txt", "r") or exit("无法打开文件!");
    // 读取文件每一行,直到文件结尾
    while(!feof($file))
    {
        echo fgets($file). "<br>";
    }
    fclose($file);//关闭打开的文件
    ?>
    feof($file)检测文件末尾(EOF)
    fgetc($file)逐字读取文件


    35.拓展小知识  csv文件
    PHP对逗号分隔符文件(*.csv)的处理
    处理数据较少时可以使用csv文件(这是一类文本文件)存储数据更便利
    比如在php代码同目录下有一个a.csv文件,内容(逗号是英文)
    小王,小红,小明
    <?php
    $fh=fopen("a.csv","r");//这里我们只是读取数据,所以采用只读打开文件流
    $arr=fgetcsv($fh);//这个函数就是读取CSV文件的函数,他把文本读入后转为数组存储在$arr中
    fcloase($fh);
    foreach($arr as $key=>$value){echo $value;}//循环输出所有的值

    ?>


    36.文件上传
    注意事项:<form>标签的enctype属性规定了在提交表单时使用哪种类型
     <input>标签type="file"属性规定了应该把输入作为文件处理。

    $_FILES["file"]["name"] - 上传文件的名称
    $_FILES["file"]["type"] - 上传文件的类型
    $_FILES["file"]["size"] - 上传文件的大小,以字节计
    $_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
    $_FILES["file"]["error"] - 由文件上传导致的错误代码


    37.Cookie是什么?
    cookie常用于识别用户,cookie是服务器留在本地文件,可以创建和获取

    创建cookie:setcookie()函数
    语法:setcookie(name,value,expire,path,domain)
    expire存活时间,可以通过time()+3600或time()-3600设置


    ******   注意:setcookie()函数必须位于<html>标签之前   ******

    创建完cookie后存放于php超级集合中   可通过$_COOKIE["名称"]调用


    time()返回自1970年至今的的秒数


    38.PHP session机制 ,session用于储存用户会话信息,会话期间页面共享
    Session工作机制:Session 的工作机制是:为每个访客创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,或者通过 URL 进行传导。


    开始PHP Session  开启前需要启动会话 同样必须位于<html>标签之前
    <?php session_start(); ?>

    注意:session配置 session.use_trans_sid参数被设为零   后面页面无法追踪前一个session


    销毁Session   用unset()或session_destroy()函数
    unset()销毁指定    session_destroy()销毁所有 重置session


    39.检测服务是否开启
    if(extension_loaded('openssl')){
                echo "已开启";
            }else{
                echo "未开启";
            }
    echo phpinfo()显示php.ini配置


    40.E-mail安全验证
    使用PHP过滤器对输入进行验证:
    FILTER_SANITIZE_EMAIL 过滤器从字符串中删除电子邮件的非法字符
    FILTER_VALIDATE_EMAIL 过滤器验证电子邮件地址的值


    41.错误处理
    1.die()语句
    例如:
    <?php
    if(file_exists("read.txt"))
    {
    $file=fopen("read.txt","r");
    }
    else
    {
    die("文件不存在!");
    }
    ?>


    2.自定义错误和错误触发器
    <?php
    function customError($errno,$errstr)    //错误处理函数
    {
    echo "<b>Error:</b>[$errno] $errstr";
    }
    //设置错误处理函数


    set_error_handler("customError");


    //触发错误,主动出错


    echo ($test) //输出:Error: [8] Undefined variable: test
    ?>
    触发错误函数:trigger_error("错误信息!");//并主动显示出错行号


    3.错误报告
    说白了,系统出错时,通过调用邮件像邮箱发送错误新消息。


    42.异常
    1.跟java异常机制大致相同,写法细节点不同
    2.可以自定义异常
    3.子类异常在前父类异常在后
    4.使用try{}catch{}


    43.JSON
    1.需要内置JSON拓展
    JSON函数()
    json_encode 对变量JSON编码。 
    json_decode 对JSON格式的字符串进行解码,转换为PHP变量
    json_last_error 返回最后发生的错误


    json_encode转json之后  中文会编程Unicode编码
    避免样例:
    $arr = array ('a'=>urlencode('脚本之家')); //urlencode
    echo urldecode(json_encode($arr)); //urldecode  绕过转码


    json_decode转回php变量
    var_dump(json_decode($json));
        var_dump(json_decode($json, true)); //当该参数为 TRUE 时,将返回数组,FALSE 时返回对象。


    44.Mysql,Mysqli,Pdo三种方式连接数据库
    mysql是php最原始的extension(延长),php-mysqli的i代表improvement(改善)
    就extension而言,增强了安全性
    而PDO是提供了abstraction layer(抽象层)来操作数据库

    mysql是非持链接函数而mysqli是永远链接函数。也就是说mysql每次打开都会打开一个连接进程而mysqli将使用同一连接进程,从而减少开销
    mysqli的开启需要更改php.ini配置文件
    详细看:http://blog.csdn.net/u010973051/article/details/50820905


    PDO的优势:
    1:PDO真正的以底层实现的统一接口数据库操作接口
    2.PDO支持更高级的DB特性操作
    3.PDO是PHP官方的PECL库,兼容性高于mysql


    45.PHP获取激活码
    http://idea.lanyus.com/


    46.单条插入数据
    mysqli:
    第一种:
    $conn=new mysqli($servername,$username,$password,$dbname);
    //检测连接
    if($conn->connect_error){
    die("连接失败:".$conn->connect_error);
    }

    $sql="sql语句";
    if($conn->query($sql)===TRUE){ //query插入方法
    echo "新纪录插入成功!";
    }else{
    echo "Error:".$sql."<br>".$conn->error;
    }
    $conn->close();
    第二种:
    $conn=mysqli_connect($servername,$username,$password,$dbname);
    //检测连接
    if(!$conn){
    die("连接异常信息:".mysqli_connect_error());
    }
    $sql="sql语句";
    if(mysqli_query($conn,$sql)){ //mysqli_query方法
    echo "插入成功!";
    }else{
    echo "Error:".$sql."<br>".mysqli_error($conn);
    }
    mysqli_close($conn); //关闭方法不一


    PDO方式:
    try{
    $conn=new PDO("mysql:host=$servername;dbname=$dbname",$username,$password);
    //设置PDO错误模式,用于抛出异常
    $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    $sql="sql语句";
    //使用exec(),没有结果返回
    $conn->exec($sql);
    echo "新纪录插入成功!";
    }
    catch(PDOExcetion $e){
    echo $sql."<br>".$e->getMessage();
    }
    $conn=null;


    47.插入多条数据
    mysqli_connect插入多行mysqli_multi_query
    new mysqli插入多行用mysqli->multi_multi_query();
    $conn->beginTransaction(); //开启事务
    $conn->commit(); //提交事务
    $conn->rollback(); //回滚事务


    48.预处理语句可以房主SQL注入
    预处理优点:
    1.预处理语句大大减少了分析时间。
    2.绑定参数减少了服务器带宽,只需要发送查询参数。
    3.预处理语句针对SQL注入

    mysqli预处理:insert 表名 values(?,?,?); //问号是占位符
    $stmt = $conn->prepare("INSERT INTO MyGuests VALUES (?, ?, ?)");
    $stmt->bind_param("sss", $firstname, $lastname, $email);
     
    // 设置参数并执行
    $firstname = "John";
    $lastname = "Doe";
    $email = "john@example.com";
    $stmt->execute(); //执行方法

    PDO预处理:
    1.拿连接
    2.设置错误模式
    3.放置预处理SQL   $stmt=$conn->prepare(SQL语句);   insert 表 value(fir:name)
    4.绑定参数   $stmt->bindParam(':firstname',$firstname);
    5.执行添加方法


    49.PHP对于XML Expat的解析 7步骤
    1.通过xml_parser_create()函数初始化XML解析器
    2.创建不同事件处理函数
    3.添加xml_set_element_handler()函数来定义,解析器遇到开始和结束标签时执行哪个函数,例如xml_set_element_handler($parser,"start","stop");
    4.添加xml_set_character_data_handler()函数定义,当解析器遇到字符数据时执行哪个函数
    5.通过xml_parse()函数来解析文件
    6.xml_error_string()函数把XML错误转换为文本说明
    7.调用xml_parser_free()函数来释放分配给xml_parser_create()函数的内存


    50.XML DOM解析
    例子:
    <?php
    $xmlDoc=new DOMDocument(); //创建DOM对象
    $xmlDoc->load("note.xml"); //load加载
    print $xmlDoc->saveXML(); //解析输出
    ?>


    51.SimpleXML 解析
    <?php
    $xml=simplexml_load_file("note.xml");
    print_r($xml);
    echo $xml->to."<br>"; //输出XML中每个元素的数据
    echo $xml->from."<br>";
    ?>
    //输出每个子节点的元素名称和数据
    <?php
    $xml=simplexml_load_file("note.xml");
    echo $xml->getName() . "<br>";
     
    foreach($xml->children() as $child)
    {
       echo $child->getName() . ": " . $child . "<br>";
    }
    ?>


    52.AJAX ajax是一种无需重新加载整个网页的情况下,能够更新部分网页的技术。
    ajax是一种用于创建快速动态网页的技术。

  • 相关阅读:
    WebApi接口返回值不困惑:返回值类型详解
    Autofac 依赖注入框架 使用
    ASP.NET Core:使用Dapper和SwaggerUI来丰富你的系统框架
    ASP .Net Core 使用 Dapper 轻型ORM框架
    基于AspNet Core2.0 开发框架,包含简单的个人博客Demo
    Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案 (精髓)
    精简版自定义 jquery
    vs code 前端如何以服务器模式打开 [安装服务器] server insteall
    RestSharp用法小结
    翻译:WebApi 认证--用户认证Oauth解析
  • 原文地址:https://www.cnblogs.com/mapsxy/p/9977744.html
Copyright © 2020-2023  润新知