PHPのconstとglobal

不言
リリース: 2023-03-23 17:04:01
オリジナル
2785 人が閲覧しました

この記事で共有する内容はphpのconstとglobalに関するもので、必要な友達は参考にしてください


【説明】

1. 定義時に初期化する必要があります; 2. 変数名の文字は通常大文字で指定します; 4. 定数はクラスに属し、特定のオブジェクトではありません。

【関数】一部の値を固定する場合はconstを使います


【区別】

constで定義された定数とdefine()で定義された定数の違いは何ですか?


メンバー変数が変更されないことを願っています (例: pi 3.1415926)。

定義: const 定数名 = 値 $ 記号なし


アクセス: クラス名::定数名またはインターフェイスname::constant name

および: define('TEXT');名前付き定数が存在するかどうかを確認する

<?php                     
 class A{
 const TAX_RATE=0.08;
 public function payTax($var){
 return $var*A::TAX_RATE;
}
}
$a=new A();
echo $a->payTax(200):
?>
ログイン後にコピー

使用法 1: const はクラスメンバー変数に使用され、一度定義すると変更することはできません, define はグローバル定数
に使用され、クラスのメンバー変数の定義には使用できません。const は
クラス内で使用できますが、define は使用できません。

使用法 2: const で定義された定数は大文字と小文字が区別され、define は 3 番目のパラメーターで大文字と小文字を区別するかどうかを指定できます (TRUE は大文字と小文字を区別しないことを意味します)。実行時に定数を定義します。 define('TXE',100,TRUE); 使用法 3: const は条件文で定数を定義できませんが、define 関数は定義できます。 if($a>10){define('LE','hello');}


global

【引用:http://www.phptd.com/?action-viewnews- itemid-6147】


1. スーパーグローバル変数 $GLOBALS


PHP には多くのスーパーグローバル変数があります。以下はすべてスーパーグローバル変数です:

$GLOBALS、$_SERVER、$ _GET、$。 _POST、$_FILES、$_COOKIE、$_SESSION、$_REQUEST、$_ENV。 公式説明:

$GLOBALS — グローバルスコープで使用可能なすべての変数を指します。

すべての変数を含むグローバル結合配列。変数の名前は配列のキーです。

  • 出現したグローバル変数は、$GLOBALS 配列を通じて取得できます。

  • PHP ライフサイクルでは、

    関数本体の外で定義されたいわゆるグローバル変数を関数内で直接取得することはできません
$foo = "Example content";
test();function test() {    $foo = "local variable";    echo &#39;$foo in current scope: &#39; . $foo . "<br>";    echo &#39;$foo in global scope: &#39; . $GLOBALS["foo"] . "<br>";
}
ログイン後にコピー


PHPのconstとglobal 上記の例では、外部 $foo にアクセスするには、$GLOBALS 配列を使用する必要があります。これは、インクルード ファイルを介して取り込まれる外部グローバル変数にも当てはまります。 php の

global にもそのような関数があります。 $GLOBALS との違いは、 PHPのconstとglobal

global は、実際の外部変数ではなく、関数の外部変数を指すエイリアス変数を関数内に生成することです。関数の変数。

$GLOBALS[] は実際には外部変数と呼ばれ、関数内外で常に一貫性があります。

  • クラス内のメンバー変数の場合、クラス内の関数には $GLOBALS ではなく $this-> を使用してアクセスする必要があります:

  • global はグローバル変数の定義に使用されますが、このグローバル変数は Web サイト全体には適用されません, ただし、現在のページに適用されます。これには、含まれるファイルまたは必要とするすべてのファイルが含まれます。
2. 例の説明


function t1() {    global $var1, $var2;    $var2 = &$var1;
}function t2() {    $GLOBALS[&#39;var3&#39;] = &$GLOBALS[&#39;var1&#39;];
}$var1 = 5;$var2 = $var3 = 0;
t1();print $var2 ."\n";
t2();print $var3 ."\n";
ログイン後にコピー


PHPのconstとglobal 実行結果は次のとおりです: 0

5

2 5 だけど 0 と 1 って何? 5 について?PHPのconstとglobal例を再度変更します:






function t1() {    global $var1;    $var1 = 2;    unset($var1);
}function t2() {    $GLOBALS[&#39;var1&#39;] = 3;    unset($GLOBALS[&#39;var1&#39;]);
}$var1 = 1;
t1();print $var1 . "\n";
t2();print $var1 . "\n";
ログイン後にコピー


执行结果只输入一个2;

1、$GLOBALS是由所有已定义全局变量自动形成的数组。变量名就是该数组的索引。即$GLOBALS['var1']与函数外部的变量$var1是同一个变量,所以将$GLOBALS['var1'] 删除后,该变量已不存在,所有无法输出了。
注:$GLOBALS是自动全局变量。这意味着它在所有的脚本中都有效。在函数或方法中不需要使用 global $GLOBALS; 来访问它。

2、"global $var1;"是产生了函数外部$var1的别名变量"$var1",它不是真正的函数外部变量,他只存在于函数的内部,所以即使在函数内将别名变量删除也不会影响外面的变量,但是可以修改函数外部变量的值。

或许有的人总想知道这个或那个的区别:在php程序,包括其他程序的学习中,自己动手实验,根据结果加上的思考,有的时候比上网查找可能会来得更快一些,更准确一些。下面我们来讲一下,php在全局范围内访问变量要怎么办?
例一:global定义全局变量。


PHPのconstとglobal

function test_global() {    global $var1;    $var1 = &#39;ok&#39;;    unset($var1);
}
test_global();$var2 = &$var1;unset($var1);echo $var2;
ログイン後にコピー

PHPのconstとglobal

先不给出结果,自己运行一下程序。函数内部的变量可以访问到了。从结果可以看出,unset只是断开变量名与变量值连接,并没有马上销毁变量的值,而且在函数内部定义的全局变量,实际在外部只是使用了函数内部的别名而已,所以我们在外面依然可以访问$var1。

例二:$GLOBALS在函数内部访问函数外面定义的变量。


$waibu = &#39;out&#39;;function ff() {    echo $GLOBALS[&#39;waibu&#39;];
}
ff();
ログイン後にコピー


直接在函数内部使用$waibu是会出错的。

相关推荐:

详解PHP常量:define和const的区别

php中const与static的区别与使用

PHP 闭包获取外部变量和global关键字声明变量的区别讲解_php实例

以上がPHPのconstとglobalの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート