首頁  >  文章  >  後端開發  >  php中的const和global

php中的const和global

不言
不言原創
2018-04-13 11:03:532758瀏覽

這篇文章給大家分享的內容是關於php中的const和global ,有著一定的參考價值,有需要的朋友可以參考一下


# #const 常數 


【說明】


1.定義時必須被初始值;2.前面不加任何修飾符;3.變數名字母一般都大寫;4.常數可以被子類別繼承;

5.一個常數是屬於一個類別的,而不是某個物件的

【作用】當某些值是固定不變的,就用const

【區分】

const 定義的常數和define()定義的常數的差別?

希望一個成員變數不會被修改例如圓周率3.1415926
定義:const 常數名稱=值; 沒有$符號

#存取:類別名稱::常數名稱或介面名稱::常數名稱

而:defined('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):
?>

用法一:

const用於類別成員變量,一經定義不可修改,define用於全域常數,不可用於類別成員變數的定義,const可在類別中使用,define不能。

用法二:const定義的常數大小寫敏感,而define可透過第三個參數(為TRUE表示大小寫不敏感)來指定大小寫是否敏感。在運行時定義一個常數。 define('TXE',100,TRUE);


用法三:

const不能在條件語句中定義常數,而define函數可以。 if($a>10){define('LE','hello');}

global

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


##一、超全域變數$GLOBALSPHP超全域變數很多,以下的都屬於超全域變數(Superglobal):

$GLOBALS,$_SERVER,$ _GET,$_POST,$_FILES,$_COOKIE,$_SESSION,$_REQUEST,$_ENV。

官方說明:

    $GLOBALS — 引用全域作用域中可用的全部變數。
  • 一個包含了全部變數的全域組合陣列。變數的名字就是數組的鍵。
  • 即出現過的全域變量,就可以透過$GLOBALS這個數組來取得。
  • PHP生命週期中,
  • 定義在函數體外部的所謂全域變量,函數內部是不能直接得到的


php中的const和global#

$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陣列。對於透過include檔案進來的外部全域變數也適用。

php中global也有這樣的功能,它和$GLOBALS的差別在於:

    global在函數產生一個指向函數外部變數的別名變量,而不是真正的函數外部變數。
  • $GLOBALS[]確實實呼叫是外部的變量,函數內外會始終保持一致。
  • 對於類別中的成員變量,類別中函數必須使用$this->的方式訪問,不能用$GLOBALS方式:

global的作用是定義全域變量,但是這個全域變數不是應用於整個網站,而是應用於目前頁面,包括include或require的所有檔案。


二、實例講解


php中的const和global

php中的const和global

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";





執行結果為:

0
5

為什麼不是2個5而是1個0和1個5呢?再修改一下範例:php中的const和global

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:PHP語言下一篇:PHP語言