学ばなければならないPHP 7

43898 ワード

PHPベースノートを整理し、PHP 7を強固にすることを学び、従来の応用は主にPHP 5バージョンに基づいており、以降の市場も徐々に成熟したPHP 7に偏っているため、PHP 7の応用を学ぶ必要がある、Hello PHP 7!
0 x 01 PHP概要PHP(Hypertext Preprocessor)、ハイパーテキストプリプロセッシング言語は、Pythonと同様に、弱いタイプのスクリプト言語、解釈言語であり、PHPHTMLドキュメントと混在することができる.
変数の4つの役割ドメイン:
  • local:ローカル変数
  • global:関数内部の変数宣言はグローバル変数を参照し、同時にグローバル変数は$GLOBALS配列変数の
  • である.
  • static:ローカル変数は
  • を削除しません
  • parameter:パラメータ役割ドメイン、関数パラメータリストに宣言された変数
  • 0x02 PHP EOF
    PHP EOFは、コマンドラインshellとプログラム言語で文字列を定義する方法であり、そのパッケージの内容は変数を解析することができる.
    
    $a = 'DYBOY';
    
    echo <<<EOF
    

    hello $a

    EOF;
    ?>

    出力の実行:
    hello DYBOY
    

    0 x 03変数
    変数には、データ、文字列、クラス、配列タイプがあります.
    3.1定数の定義:
    
    
    //       URL  ,        ,        
    define('BASE_URL', 'https://blog.dyboy.cn/');
    
    ?>
    

    3.2配列:count($arr)を使用して配列の長さを取得し、PHPには関連配列、キー値ペアの形式が存在する.
    
        //            
        $arr = ['status' => 1, 'data' => 'OK'];
    
        foreach($arr as $key => $val){
            echo "  :".$key.'  :'.$val;
        }
    ?>
    

    3.3配列ソート:sort()-配列を昇順に並べ替えるrsort()-配列を降順に配列asort()-関連配列の値に基づいて配列を昇順に並べ替えるksort()-関連配列のキーに従って配列を昇順に並べ替えるarsort()-関連配列の値に基づいて配列を降順に並べ替えます.krsort()-関連配列のキーに従って配列を降順に並べ替える
    いくつかの配列の組み込み関数アクション:https://www.runoob.com/php/php-ref-array.html

    3.4 $_SERVER:
     
        echo $_SERVER['PHP_SELF'];
    
        echo $_SERVER['SERVER_NAME'];
    
        echo $_SERVER['HTTP_HOST'];
     
        echo $_SERVER['HTTP_REFERER'];
    
        echo $_SERVER['HTTP_USER_AGENT'];
    
        echo $_SERVER['SCRIPT_NAME'];
    
    ?>
    

    0 x 04マジック定数
    使い心地の良い定数は、これらの変数の大文字と小文字が敏感ではなく、同じ効果です.
    変数#ヘンスウ#
    説明__LINE__
    現在のコード行番号を返します__FILE__
    現在のファイルの完全なパス+ファイル名.含まれているファイルで使用すると、含まれているファイル名が返されます.__DIR__
    現在のファイルのパス__FUNCTION__
    関数の内部に使用して、現在の関数名を出力し、関数名の大文字と小文字を区別します.__CLASS__
    クラスで使用して、現在のクラス名を返し、クラス名の大文字と小文字を区別します.__METHOD__
    クラスのメソッド名__NAMESPACE__
    ネーミングスペース
    0 x 05クラス
    オブジェクト(OOP)に向けて,オブジェクトは情報と情報を処理する記述からなる全体であり,現実世界に対する抽象である.
    
    //         
    class People{
        // var        
        var name;
        var age;
        var sex;
    
        //     ,     
        function __construct( $name, $age, $sex ) {
            $this->name = $name;
            $this->age = $age;
            $this->sex = $sex;
        }
    
        // function       ,        
        function run($long){
            echo $this->name." can run ".$long." Meters";
        }
    
        //     
        function __destruct() {
          echo "      ";
       }
    
    }
    
    $newObj = new People('DYBOY', '20', 'boy');   //     
    ?>
    

    クラスの継承、親と子、子は親を継承し、親を拡張することができます.PHPはマルチ継承をサポートしていません.
    
        //     
        class Chinese extends People {
            // coding...
            var position;   //    
    
            //     ,             
            function run(){
                echo "   6666,   6666666 KM";
            }
    
    
        }
    
    ?>
    

    アクセス制御
    public(パブリック):パブリッククラスメンバーは、どこでもアクセスできます.
    protected(保護):保護されたクラスメンバーは、その子クラスおよび親クラスにアクセスできます.
    private(プライベート):プライベートクラスメンバーは、定義されたクラスにのみアクセスできます.
    staticキーワード
    クラスのプロパティまたはメソッドがstatic(静的)であることを宣言すると、クラスをインスタンス化せずに直接アクセスできます.
    静的プロパティは、クラスがインスタンス化されたオブジェクトからアクセスできません(静的メソッドは可能です).
    静的メソッドはオブジェクトを介して呼び出す必要がないため、擬似変数$thisは静的メソッドでは使用できません.
    静的プロパティは、->オペレータを使用してオブジェクトにアクセスできません.
    0 x 06ファイルは含む
    PHPにはrequireincludeの2種類がありますが、違いはincludeでエラーが発生した後も実行を続け、requireで停止し、requireを使用することをお勧めします.
    0 x 07ファイル
    ファイルには読み取りファイル、書き込みファイルが含まれ、PHPではformフォームに渡されたファイルが処理されます.
    
    if ($_FILES["file"]["error"] > 0)
    {
        echo "  :" . $_FILES["file"]["error"] . "
    "
    ; } else { echo " : " . $_FILES["file"]["name"] . "
    "
    ; echo " : " . $_FILES["file"]["type"] . "
    "
    ; echo " : " . ($_FILES["file"]["size"] / 1024) . " kB
    "
    ; echo " : " . $_FILES["file"]["tmp_name"]; } ?>

    0 x 08異常処理
    未知のエラーが発生する可能性がある場合は、異常を投げ出し、対応する操作を実行し、後続の作業が順調に処理されることを保証する必要があります.
    
    //             
    function checkNum($number) {
        if($number>1)
        {
            throw new Exception("          1");
        }
            return true;
    }
    
    //   try       
    try {
        checkNum(2);
        //       ,        
        echo '       ,   $number   ';
    }
    //     
    catch(Exception $e) {
        echo 'Message: ' .$e->getMessage();
    }
    
    ?>
    

    0 x 09フィルタ
    フィルタは実際には内蔵されたパラメータ検証関数と見なすことができ,自分で実現することもできる.
  • filter_var()-単一の変数
  • を指定されたフィルタによってフィルタリングする.
  • filter_var_array()-複数の変数
  • を同じまたは異なるフィルタによってフィルタリングする.
  • filter_input()-入力変数を取得し、
  • をフィルタリングする.
  • filter_input_array()-複数の入力変数を取得し、同じまたは異なるフィルタによってそれらをフィルタ
  • する.
    フィルタ:https://www.runoob.com/php/php-ref-filter.html

    0x0A JSON
    php処理jsonデータにはstring json_encode ( $value [, $options = 0 ] )mixed json_decode ($json_string [,$assoc = false [, $depth = 512 [, $options = 0 ]]])の2つの関数がある
    0 x 0 Bネーミングスペース
    ネーミングスペースは、異なるファイルで可能な関数、変数、クラス名の名前の重複による競合を解決し、別名を取得します.
    
        namesapce mySpace;
        // coding...
    
    ?>
    

    ≪サブネーミングスペース|Subname Space|oem_src≫:≪階層定義|Hierarchy Definition|oem_src≫
    
        namespace MyProject\Sub\Level;  //            
    
        const CONNECT_OK = 1;
        class Connection { /* ... */ }
        function Connect() { /* ... */  }
    
        /*
          :
           MyProject\Sub\Level\CONNECT_OK
          MyProject\Sub\Level\Connection
           MyProject\Sub\Level\Connect
        */
    ?>
    

    ネーミングスペースの使用:限定、非限定、完全限定の3つの方法で、ネーミングスペースをインポートするにはuse文を使用します.また、別名asを指定できます.たとえば、use app\index\model\User as UserModel;
    
    // file1.php
    
    namespace Foo\Bar\subnamespace; 
    
    const FOO = 1;      //  
    function foo() {    //  
        //coding...
        echo __NAMESPACE__;
    }
    class foo {         // 
        static function staticmethod() {}
    }
    ?>
    
    //file2.php
    
    namespace Foo\Bar;
    include 'file1.php';
    
    const FOO = 2;
    function foo() {
        //coding...
        echo __NAMESPACE__;
    }
    class foo {
        static function staticmethod() {}
    }
    
    /* 1.      */
    foo(); //       Foo\Bar\foo,  :Foo\Bar
    foo::staticmethod(); //      Foo\Bar\foo ,    staticmethod
    echo FOO; //       Foo\Bar\FOO,  2
    
    /* 2.     */
    subnamespace\foo(); //       Foo\Bar\subnamespace\foo,  Foo\Bar\subnamespace
    subnamespace\foo::staticmethod(); //      Foo\Bar\subnamespace\foo,
                                      //        staticmethod
    echo subnamespace\FOO; //       Foo\Bar\subnamespace\FOO
    
    /* 3.       */
    \Foo\Bar\foo(); //       Foo\Bar\foo
    \Foo\Bar\foo::staticmethod(); //      Foo\Bar\foo,        staticmethod
    echo \Foo\Bar\FOO; //       Foo\Bar\FOO
    
    
    //          、     ,           ,   \strlen()   \Exception   \INI_ALL。
    ?>
    

    More:https://www.runoob.com/php/php-namespace.html

    0 x 0 C接続データベース
    データベースは情報とデータを格納する重要なソフトウェアとして、php接続データベースは主にmysqliとPDOの2つの方式があり、mysqliはmysqlデータベースにしか接続できない.pdoは12種類のデータベース操作をサポートし、phpの拡張に属し、デフォルトでmysqliがインストールされている.
    // mysqli     
    
    
     //      mysqli_connect(host,username,password,dbname,port,socket);
     //        
     $conn = new mysqli('127.0.0.1', 'username', 'passwd', 'dbname');
    
     //    
     if($conn->connect_error){
         die('       :'.$conn->connect_error);
     }
    
     //...    
    
    //   sql  
    $result = $conn->query("SELECT * FROM users");
    if($result->num_rows > 0){
        while($row = $result->fetch_assoc()){
            echo $row['uid'].$row['username'];
        }
    }
    else{
        echo 'Nothing...';
    }
    
    //       
    $sql = "INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('John', 'Doe', '[email protected]');";
    $sql .= "INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('Mary', 'Moe', '[email protected]');";
    $sql .= "INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('Julie', 'Dooley', '[email protected]')";
    $conn->multi_query($sql)
    
    
    //     
    $conn->close();
    
    ?>
    
    //PDO  
    
        try {
            $conn = new PDO("mysql:host='127.0.0.1';", 'username', 'passwd');
            echo "    ";
        }
        catch(PDOException $e) {
            echo $e->getMessage();
        }
    ?>
    
    /*mysqli    */
    
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDB";
    
    //     
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    // Check connection
    if (!$conn) {
        die("    : " . mysqli_connect_error());
    }
    
    $sql = "SELECT id, firstname, lastname FROM MyGuests";
    $result = mysqli_query($conn, $sql);
    
    if (mysqli_num_rows($result) > 0) {
        //     
        while($row = mysqli_fetch_assoc($result)) {
            echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "
    "
    ; } } else { echo "0 "; } mysqli_close($conn); ?>

    0 x 02 Dその他
    Date、正規表現、FTP、HTTP、XMLなどの操作もたくさんありますが、これらの内容は基本的にマニュアルを見ればいいので、国内の比較的速いサイトをお勧めします.https://www.php.net

    オフラインマニュアルダウンロード:『PHP 7中国語マニュアル2018版』
    0 x SE共通関数
    一般的な関数、文字列の一部を整理する操作
    関数#カンスウ#
    説明strlen($str)
    文字列の長さを返しますstrpos($str, $parm)
    文字列の最初の文字に一致する位置を返しました.addslashes($str)
    文字列に定義済み文字がある前に\を付けるexplode(',', $str)
    文字列を,で区切り、配列に分割するimplode(',', $arr)
    1次元配列を,で区切られた文字列に組み合わせるtrim($str)
    文字列の両端のスペースを削除md5($str)
    計算文字列のMD 5ハッシュmd5_file($file_path)
    対応するパスファイルのMD 5ハッシュの計算sha1() , sha1_file() md5()と同様ord($char)
    文字に対応するASCIIのコード値を返します.chr($num) ASCIIコードの数値に対応する文字を返します.printf($str, $param1, $param2)
    出力のフォーマットsprintf() printf()と同様に、戻り値は変数付与可能な値を格納するhtmlspecialchars($str)
    定義済みエンティティを文字に変換htmlspecialchars_decode($str)
    文字列の定義済み文字をHTMLエンティティに変換str_rot13($str)
    アルファベット文字列ROT 13を符号化、オフセット13、符号化復号関数を同一にするstrstr() strcmp($str1, $str2)
    2つの文字列を比較し、0を返します.str_word_count(string,return,char)
    文字列内の単語数の計算strip_tags(string,allow)
    文字列のHTML、XML、PHPのラベルを剥がすstrrev($str)
    文字列の反転strtolower($str)
    文字列アルファベット小文字strtoupper($str)
    文字列を大文字に変換substr(string,start,length)
    文字列切り取り、符号化の問題はmb_substr()を使用できます.strtr(string,from,to) , strtr(string,array)
    文字列内の特定の文字を変換します.配列はkey=keyword、val=置換文字var_dump($param)
    デバッグ出力の詳細array_reverse($arr)
    配列反転array_unique($arr)
    配列内の重複値の除去in_array ( $param, $arr[, TRUE ] )
    配列に対応する値が存在するかどうかは、TRUEを返します.file_get_cotents($url)
    ファイルの内容をテキスト文字列で読み込むfile_put_contents($filepath)
    ファイルに内容を書き込むfile_exists($filepath)
    ファイルが存在するかどうかは、boolに戻ります.
    0 x 0 Fまとめ
    PHP 7はすでに市场に発表されて何年も経っているので、PHP 7の応用はまだ非常に成熟しています.最近、PHPに基づく多くのプロジェクトの大部分がPHP 7バージョンを使っているのを见て、大きなトレンドが来て、时代の歩みに追いつきました.皆さんと东さんの交流を歓迎します.
    私の個人ブログに注目してください.原文の住所でもあります.https://blog.dyboy.cn/program/124.html