波兄はあなたにPHP 7の4を学ぶことを教えます:PHP変数と定数

7946 ワード

変数#ヘンスウ#
カスタム変数
PHP変数は$プラス変数名で表され、変数名は大文字と小文字を区別することに注意します.これは、次の2つの変数が異なることを意味します.
$a = 'abc';
$A = 'def';

var_dump($a, $A);

有効な変数名は、アルファベットの下線の先頭、後ろの任意のアルファベットの下線の数です.
$__abc = ''; //   
$A__   = ''; //   
$     = '     '; //   ,     
$.abc  = ''; //    
$ab*   = ''; //    

$thisは特殊な変数であり、値を割り当てることはできません.『類と対象』では、自分を表す.
Class Human {
    public $populationNumber = 72; /* populationNumber            $    */

    public function print($str) {
        echo $str;
    }

    public function population()
    {
        $populationNumber = $this->populationNumber; /* populationNumber   $this      $    */
        $this->print("       ,   {$populationNumber}  
"); } } (new Human())->population();

値が定義されていない場合、変数は実際にNULL変数の参照例です.印刷された$var 1と$var 2変数は同じです.
$var1 = '  ';
$var2 = &$var1;
$var1 = $var1 . '    ' . "
"; echo $var1; echo $var2;

定義済み変数
あらかじめ定義された変数で、直接使用できます.PHPに内蔵されている変数の一部です.次のチュートリアルでは、これらの事前定義された変数が徐々に使用されます.比較的一般的なものは$GET、$_POST、$_SESSION、$_COOKIE、$_SERVER.その後、実際のアプリケーションシーンで一つ一つプレゼンテーションします.
  • $GLOBALS-グローバル役割ドメインで使用可能なすべての変数
  • を参照します.
  • $_SERVER-サーバおよび実行環境情報
  • $_GET—HTTP GET変数
  • $_POST-HTTP POST変数
  • $_FILES—HTTPファイルアップロード変数
  • $_REQUEST—HTTP Request変数
  • $_SESSION-Session変数
  • $_EnV-環境変数
  • $_COOKIE — HTTP Cookies
  • $php_Errormsg-前のエラーメッセージ
  • $HTTP_RAW_POST_DATA-オリジナルPOSTデータ
  • $http_response_ヘッダー-HTTP応答ヘッダ
  • $argc-スクリプトに渡されるパラメータの数
  • $argv-スクリプトに渡されるパラメータ配列
  • 定義済み変数の例は、ブラウザでアクセスしてくださいhttp://localhost/phpstudy/example_17.php?name=Mary&age=18
    ', $_GET);
    var_dump('
    ', $_SERVER);
    

    かへんへんすう
    とは、 の を の として し、シーンによっては されます. な は のコードを してください.
    /*      */
    
    $hello = 'kitty';
    $$hello = "is a Cat"; //             $kitty
    
    echo "$hello ${$hello} 
    "; echo "$hello $kitty
    "; /* */ class V { public $a = 'I am a'; public $b = ['I am b0', 'I am b1', 'I am b2']; public $c = 'I am c'; public $abc = 'I am abc'; } $v = new V(); $attr1 = 'a'; $attr2 = ['a', 'b', 'c', 'd']; $attr3 = 'abc'; echo $v->$attr1 . "
    "; // $attr1 a $v->a I am a // echo $v->$attr2[0] . "
    "; // only php5 echo $v->{$attr2[0]} . "
    "; // php7 & php5 {$attr2[0]} b echo $v->$attr3 . "
    "; echo $v->{$attr3[1]}[1] . "
    "; // {$attr3[1]} b $v->b[1] I am b1

    コマンドラインで :
    kitty is a Cat 
    kitty is a Cat 
    I am a
    I am a
    I am abc
    I am b1
    

    せいてきへんすう
    1つの を1 すると1が し,nonStaticメソッドは できないと する.しかし, を いたstaticVarは できる. はクラスにも できますが、Sクラスのa は なので、 インスタンス してもaddを すると に1が されます.
    function nonStatic()
    {
        $a = 1;
        echo $a . "
    "; $a ++; } nonStatic(); // 1 nonStatic(); // 1 function staticVar() { static $a = 1; echo $a . "
    "; $a ++; } staticVar(); // 1 staticVar(); // 2 staticVar(); // 3 class S { public static $a = 1; public function add() { echo self::$a . "
    "; self::$a ++; } } $s1 = new S(); $s1->add(); // 1 $s2 = new S(); $s2->add(); // 2 (new S())->add(); // 3

    の ドメイン
    の では、 (クラス)の で された は、 で することはできません. のキーワードまたは された を してのみアクセスできます. で された は、 でもアクセスできません.include requireなどのファイル む 、 えばa.phpにb.phpが まれている は、2つのファイルを1つの のファイルと なして、 の ドメインを えることができます.
    /*        */
    $zone1 = 11;
    $zone2 = 12;
    $zone3 = 13;
    
    function zoneFun() {
        echo $zone1 . "
    "; // $zone1 global $zone2; // global $zone2 echo $zone2 . "
    "; echo $GLOBALS['zone3'] . "
    "; // $GLOBALS $zone4 = 14; // } zoneFun(); echo $zone4 . "
    "; // zoneFun , 。

    は のとおりです.
    Notice: Undefined variable: zone1
    
    12
    13
    
    Notice: Undefined variable: zone4
    


    は、 に で できない め されたタイプです. が されると、 を したりキャンセルしたりすることはできません. えば 、 えば は、いくつかの で、 に すればいいので、 のように する はありません.
    いっぱんていすう
    な は の で され、$ はありません. はグローバル であり、$GLOBALSのように に できます. の では、defineとconstで を し、definedで が されているかどうかを できます.get_defined_constants(true)['user']は、コードで した をすべて できます. がダイナミックな は、 constant()を して の を することもできます.

    は のとおりです.
    float(3.1415926)
    array(2) {
      [0]=>
      string(3) " "
      [1]=>
      string(3) " "
    }
    array(2) {
      [0]=>
      string(3) "red"
      [1]=>
      string(5) "green"
    }
    array(3) {
      ["PI"]=>
      float(3.1415926)
      ["COLOR_LIST"]=>
      array(2) {
        [0]=>
        string(3) "red"
        [1]=>
        string(5) "green"
      }
      ["SEX"]=>
      array(2) {
        [0]=>
        string(3) " "
        [1]=>
        string(3) " "
      }
    }
    

    マジック
    PHPが するとき、PHP で されたマジック を して、 たちの を にすることができます.マジック の じ は なる で られる は なる.マジック は、2つの に を け、2つの を けて されていることがわかります.
    __LINE__                。
    __FILE__                   。          ,          。
    __DIR__                。          ,              。      ,              。(PHP 5.3.0   )
    __FUNCTION__        (     )
    __CLASS__           (     )。             (   Foo\Bar)
    __TRAIT__       Trait    (PHP 5.4.0   )。  PHP 5.4        trait        (     )。Trait             (   Foo\Bar)。
    __METHOD__           (PHP 5.0.0   )。            (     )。
    __NAMESPACE__            (     )。           (PHP 5.3.0   )。
    

    1つの しい は のようにして、 を して、 に にこれらのマジックの を することができます
    ";
    echo '   ' . __LINE__ . " 
    "; echo ' :' . __DIR__ . "
    "; echo ' :' . __FILE__ . "
    "; function whatIsMyName() { echo ' :' . __FUNCTION__ . "
    "; } whatIsMyName(); // Tool trait trait Tool { public function getBall() { echo ' :' . __FUNCTION__ . "
    "; echo ' :' . __CLASS__ . "
    "; echo ' :' . __METHOD__ . "
    "; echo ' :' . __NAMESPACE__ . "
    "; echo 'TRAIT:' . __TRAIT__ . "
    "; } } // class Checker { use Tool; public function isQQ() { echo ' :' . __FUNCTION__ . "
    "; echo ' :' . __CLASS__ . "
    "; echo ' :' . __METHOD__ . "
    "; echo ' :' . __NAMESPACE__ . "
    "; echo " trait :
    "; $this-?>getBall(); } } (new Checker)->isQQ();

    は のとおりです.
       5 
       6 
          :/phpstudy
          :/phpstudy/example_19.php
        :utils\whatIsMyName
       :isQQ
       :utils\Checker
       :utils\Checker::isQQ
        :utils
       trait    :
       :getBall
       :utils\Checker
       :utils\Tool::getBall
        :utils
    TRAIT:utils\Tool