zoukankan      html  css  js  c++  java
  • PHP学习笔记---高级知识

     一、多维数组

       一个数组中的值可以是另一个数组,另一个数组的值也可以是一个数组。依照这种方式,我们可以创建二维或者三维数组。

    <?php 
    $arr = array(
        "first"=>array("1","2","3","<br>"),
        "sencond"=>array("4","5","6","<br>"),
        "third"=>array("7","8","9","<br>")
    );
    print_r($arr);//能够格式化的输出数组内容
    ?>

    二、data();日期函数

      PHP date() 函数可把时间戳格式化为可读性更好的日期和时间。

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

    date() 函数的第一个必需参数 format 规定了如何格式化日期/时间。

    这里列出了一些可用的字符:

    • d - 代表月中的天 (01 - 31)
    • m - 代表月 (01 - 12)
    • Y - 代表年 (四位数)
    <?php 
    echo date("Y-M-d--N---H-i--s--A"),"<br>";//format格式字
    echo date("L");//是否为闰年     如果是闰年为 1,否则为 0
    ?>
    format 字符说明返回值例子
    --- ---
    d 月份中的第几天,有前导零的 2 位数字 0131
    D 星期中的第几天,文本表示,3 个字母 MonSun
    j 月份中的第几天,没有前导零 131
    l("L"的小写字母) 星期几,完整的文本格式 SundaySaturday
    N ISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天)
    S 每月天数后面的英文后缀,2 个字符 stndrd 或者 th。可以和 j 一起用
    w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六)
    z 年份中的第几天 0365
    星期 --- ---
    W ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的) 例如:42(当年的第 42 周)
    --- ---
    F 月份,完整的文本格式,例如 January 或者 March JanuaryDecember
    m 数字表示的月份,有前导零 0112
    M 三个字母缩写表示的月份 JanDec
    n 数字表示的月份,没有前导零 112
    t 给定月份所应有的天数 2831
    --- ---
    L 是否为闰年 如果是闰年为 1,否则为 0
    o ISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加) Examples: 1999 or 2003
    Y 4 位数字完整表示的年份 例如:19992003
    y 2 位数字表示的年份 例如:9903
    时间 --- ---
    a 小写的上午和下午值 ampm
    A 大写的上午和下午值 AMPM
    B Swatch Internet 标准时 000999
    g 小时,12 小时格式,没有前导零 112
    G 小时,24 小时格式,没有前导零 023
    h 小时,12 小时格式,有前导零 0112
    H 小时,24 小时格式,有前导零 0023
    i 有前导零的分钟数 0059>
    s 秒数,有前导零 0059>
    u 毫秒 (PHP 5.2.2 新加)。需要注意的是 date() 函数总是返回 000000 因为它只接受 integer 参数, 而 DateTime::format() 才支持毫秒。 示例: 654321
    时区 --- ---
    e 时区标识(PHP 5.1.0 新加) 例如:UTCGMTAtlantic/Azores
    I 是否为夏令时 如果是夏令时为 1,否则为 0
    O 与格林威治时间相差的小时数 例如:+0200
    P 与格林威治时间(GMT)的差别,小时和分钟之间有冒号分隔(PHP 5.1.3 新加) 例如:+02:00
    T 本机所在的时区 例如:ESTMDT(【译者注】在 Windows 下为完整文本格式,例如"Eastern Standard Time",中文版会显示"中国标准时间")。
    Z 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。 -4320043200
    完整的日期/时间 --- ---
    c ISO 8601 格式的日期(PHP 5 新加) 2004-02-12T15:19:21+00:00
    r RFC 822 格式的日期 例如:Thu, 21 Dec 2000 16:01:07 +0200
    U 从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数 参见 time()

    三、外部文件引入

      在服务器执行 PHP 文件之前在该文件中插入一个文件的内容。

    include 和 require 语句用于在执行流中插入写在其他文件中的有用的代码。

    include 和 require 除了处理错误的方式不同之外,在其他方面都是相同的:

    • require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。
    • include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。

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

    包含文件省去了大量的工作。这意味着您可以为所有网页创建标准页头、页脚或者菜单文件。然后,在页头需要更新时,您只需更新这个页头包含文件即可。

      示例:

    <?php 
    include 'header.php'; //一般放在 PHP 文件的最前面,程序在执行前就会先导入要引用的文件
    if (1 < 2) {
        require 'require.php';//一般放在程序的流程控制中,当程序执行时碰到才会引用,简化程序的执行流程。
    }
    ?>

    四、文件处理

        fopen(name,type) 函数用于在 PHP 中打开文件。

        此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件(类似于Python中的文件处理方式)

    文件打开模式:

    模式描述
    r 只读。在文件的开头开始。
    r+ 读/写。在文件的开头开始。
    w 只写。打开并清空文件的内容;如果文件不存在,则创建新文件。
    w+ 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。
    a 追加。打开并向文件末尾进行写操作,如果文件不存在,则创建新文件。
    a+ 读/追加。通过向文件末尾写内容,来保持文件内容。
    x 只写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。
    x+ 读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。

        fclose() 函数用于关闭打开的文件

    feof() 函数检测是否已到达文件末尾(EOF)。

    <?php 
    $file = fopen("demo.txt", "a+") or exit("无法打开文件!");//文件打开,以读写的模式,在文件的开头开始。
    while (!feof($file)) {
        echo fgets($file)."<br>";
    }
    $write = "end";
    file_put_contents("demo.txt", $write, FILE_APPEND | LOCK_EX);
    fclose($file);//文件关闭
    ?>

    五、PHP Cookie

      什么是Cookie?

        cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。

    setcookie(name, value, expire, path, domain);
    

    setcookie() 函数用于设置 cookie。

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

    <?php setcookie("user","PHP",time()+3600);//设置cookie名为:user,过期时间为1小时
    //cookie的设置必须在<html>标签的前面?>
    <html>
    <head>
    <title>PHP高级教程</title>
    </head>
    <dody>
    <?php 
    if (isset($_COOKIE["user"])) {
        echo "用户:".$_COOKIE["user"];
    }
    setcookie("user","",time()-3600);//cookie的删除
    if (isset($_COOKIE["user"])) {
        echo "用户:".$_COOKIE["user"];
    }else{
        echo "cookie已删除";
    }
    ?>
    </dody>
    </html>

    六、PHP Session

      PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。

      您在计算机上操作某个应用程序时,您打开它,做些更改,然后关闭它。这很像一次对话(Session)。计算机知道您是谁。它清楚您在何时打开和关闭应用程序。然而,在因特网上问题出现了:由于 HTTP 地址无法保持状态,Web 服务器并不知道您是谁以及您做了什么。

    PHP session 解决了这个问题,它通过在服务器上存储用户信息以便随后使用(比如用户名称、购买商品等)。然而,会话信息是临时的,在用户离开网站后将被删除。如果您需要永久存储信息,可以把数据存储在数据库中。

    Session 的工作机制是:为每个访客创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,或者通过 URL 进行传导。

      示例(PHP Session 实现一个页面的访问量记录):

    <?php session_start();//开始存储session数据?>
    <html>
    <head>
    <title>PHP高级教程</title>
    </head>
    <body>
    <?php
    if(isset($_SESSION['views']))
    {
        $_SESSION['views']=$_SESSION['views']+1;
    }
    else
    {
        $_SESSION['views']=1;
    }
    echo "浏览量:".$_SESSION['views'];
    
    //session的销毁
    if(isset($_SESSION['views']))
    {
        unset($_SESSION['views']);//unset() 函数用于释放指定的 session 变量
    }
    //session_destroy();//也可以通过调用 session_destroy() 函数彻底销毁 session
                        //session_destroy() 将重置 session,您将失去所有已存储的 session 数据。
    ?>
    </body>
    </html>

    七、PHP 错误处理

      在创建脚本和 Web 应用程序时,错误处理是一个重要的部分。如果您的代码缺少错误检测编码,那么程序看上去很不专业,也为安全风险敞开了大门。

      3种不同的错误处理方法:

    • 简单的 "die()" 语句
    • 自定义错误和错误触发器
    • 错误报告

      1、die()语句处理

    <?php
    if(!file_exists("welcome.txt"))
    {
        die("文件不存在");
    }
    else
    {
        $file=fopen("welcome.txt","r");
    }
    ?>

      2、自定义错误处理 

      创建一个自定义的错误处理器非常简单。我们很简单地创建了一个专用函数,可以在 PHP 中发生错误时调用该函数。该函数必须有能力处理至少两个参数 (error level 和 error message),但是可以接受最多五个参数(可选的:file, line-number 和 error context)。

      error_function(error_level,error_message, error_file,error_line,error_context)

    参数描述
    error_level 必需。为用户定义的错误规定错误报告级别。必须是一个数字。参见下面的表格:错误报告级别。
    error_message 必需。为用户定义的错误规定错误消息。
    error_file 可选。规定错误发生的文件名。
    error_line 可选。规定错误发生的行号。
    error_context 可选。规定一个数组,包含了当错误发生时在用的每个变量以及它们的值。
    <?php
    // 错误处理函数
    function customError($errno, $errstr)
    {
        echo "<b>Error:</b> [$errno] $errstr<br>";
        echo "脚本结束";
        die();
    }
    
    // 设置错误处理函数
    set_error_handler("customError",E_USER_WARNING);
    
    // 触发错误
    $test=2;
    if ($test>1)
    {
        trigger_error("变量值必须小于等于 1",E_USER_WARNING);
    }
    ?>

      3、错误记录

      在默认的情况下,根据在 php.ini 中的 error_log 配置,PHP 向服务器的记录系统或文件发送错误记录。通过使用 error_log() 函数,您可以向指定的文件或远程目的地发送错误记录。

    八、PHP 异常处理

        

    异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情况称为异常。

    当异常被触发时,通常会发生:

    • 当前代码状态被保存
    • 代码执行被切换到预定义(自定义)的异常处理器函数
    • 根据情况,处理器也许会从保存的代码状态重新开始执行代码,终止脚本执行,或从代码中另外的位置继续执行脚本

    我们将展示不同的错误处理方法:

    • 异常的基本使用
    • 创建自定义的异常处理器
    • 多个异常
    • 重新抛出异常
    • 设置顶层异常处理器

    注释:异常应该仅仅在错误情况下使用,而不应该用于在一个指定的点跳转到代码的另一个位置。

      

      

      要避免出现的错误,我们需要创建适当的代码来处理异常。

      适当的处理异常代码应该包括:

    1. Try - 使用异常的函数应该位于 "try" 代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。
    2. Throw - 里规定如何触发异常。每一个 "throw" 必须对应至少一个 "catch"。
    3. Catch - "catch" 代码块会捕获异常,并创建一个包含异常信息的对象。

      异常的规则:

    • 需要进行异常处理的代码应该放入 try 代码块内,以便捕获潜在的异常。
    • 每个 try 或 throw 代码块必须至少拥有一个对应的 catch 代码块。
    • 使用多个 catch 代码块可以捕获不同种类的异常。
    • 可以在 try 代码块内的 catch 代码块中抛出(再次抛出)异常。

      简而言之:如果抛出了异常,就必须捕获它。

  • 相关阅读:
    TP框架中模板赋值
    使用PHP和GZip压缩网站JS/CSS文件加速网站访问速度
    测试相关知识分享(百度和其他途径查找到的)
    测试基本概念
    shell编程之重定向
    shell编程之函数
    shell编程之循环
    shell编程之测试和判断
    shell编程之变量
    Linux系统学习之正则表达式
  • 原文地址:https://www.cnblogs.com/null-/p/9719647.html
Copyright © 2011-2022 走看看