波兄はあなたにPHP 7の4を学ぶことを教えます:PHP変数と定数
7946 ワード
変数#ヘンスウ#
カスタム変数
PHP変数は$プラス変数名で表され、変数名は大文字と小文字を区別することに注意します.これは、次の2つの変数が異なることを意味します.
有効な変数名は、アルファベットの下線の先頭、後ろの任意のアルファベットの下線の数です.
$thisは特殊な変数であり、値を割り当てることはできません.『類と対象』では、自分を表す.
値が定義されていない場合、変数は実際にNULL変数の参照例です.印刷された$var 1と$var 2変数は同じです.
定義済み変数
あらかじめ定義された変数で、直接使用できます.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
カスタム変数
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.その後、実際のアプリケーションシーンで一つ一つプレゼンテーションします.
', $_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