php全局常量
1. php中用define定義的常量是否全局有效
是全局有效的,還不要聲明全局
常量有常量的好處,它不需要存儲refcount,不需要垃圾回收機制,能節省下一些不必要的內存開銷。
因此如果有一個不需修改的值,最好用常量
2. PHP Global變數定義當前頁面的全局變數實現探討
PHP
Global變數在實際應用中會發現許多問題需要我們不斷的去完善處理。我們在這篇文章中就針對PHP
Global變數出現的問題給出了一些具體的解決辦法。
1:PHP
Global變數的作用是定義全局變數,但是這個全局變數不是應用於整個網站,而是應用於當前頁面,包括include或require的所有文件
復制代碼
代碼如下:
$a=123;
function
aa()
{
Global
$a;
//如果不把$a定義為global變數
,函數體內是不能訪問$a的
echo
$a;
}
aa();
總結:在函數體內定義的PHP
Global變數,函數體外可以使用,在函數體外定義的global變數不能在函數體內使用,
復制代碼
代碼如下:
$glpbal
$a;
$a=123;
function
f()
{
echo
$a;
//錯誤,
}
再看看下面一例
復制代碼
代碼如下:
function
f()
{
global
$a;
$a=123;
}
f();
echo
$a;
//正確,可以使用
2:PHP
Global變數問題解析:
question:我在config.inc.php中定義了一些變數($a),在別的文件中函數外部
include("config.inc.php"),函數內部需要使用這些變數$a,如果沒有聲明的話,echo
$a是列印不出來任何東西的。因此聲明global
$a,但是有很多函數和很多變數,總不能不斷重復的這樣聲明吧?有什麼好的解決辦法,請指點。
answer1:先在config.inc.php里定義常量:define(常量名,常量值),再在其他需要用到的地方require
'config.inc.php',然後就能在這個文件里直接使用這個常量了。
answer2:我也有個辦法,就是定義數組,如$x[a],$x,那樣就只要聲明global
$x一個了。
answer3:我試了你的這個方法,不行啊。
answer4:改你的php.ini文件。
設置PHP
Global變數
為
on
3. PHP中用define定義的常量是否全局有效
define 是全局常量,當然對全局有效
4. php如何定義常量,系統常量和使用常量
定義常量
define('NAME','hello');
echoNAME;//hello
PHP 自 5.3 後可以直接通過 const 關鍵字來定義常量
constNAME='hello';
echoNAME;//hello
系統常量可以直接列印,如:
echo__DIR__;//當前執行文件的路徑
echo__FILE__;//當前執行的文件地址及文件名
5. php如何是用define呢,讓他起到全局的常量的作用
php中的define定義的是常量,不會修改的變數,因此,它們也是全局變數,在函數中可以訪問,唯一的不同是,它是不能被修改的,只能訪問。
6. thinkphp 5.0 怎麼設置模版的全局變數【常量也行】
設置全局變數規則,全部路由有效:
//設置name變數規則(採用正則定義)
Route::pattern('name','w+');
//支持批量添加
Route::pattern([
'name'=>'w+',
'id'=>'d+',
]);
7. PHP中使用全局變數~呢
在方法體中使用全局變數可以有兩種方式:
先在方法(函數)外面定義變數,在方法體中全局化這個變數 :global $abc
也可以在方法(函數)體中用$_GLOBALS['abc']
之後就可以在方法中調用這個變數了
8. PHP如何添加預定義常量或變數
常量使用define語句定義即可
全局變數可以定義到全局變數數組$GLOBALS中
參考手冊 : http://php.net/manual/zh/rese...
看題主的問法,感覺"環境變數"可能符合題主要求
nginx配置PHP server的時候可以增加以下指令
fastcgi_param CUSTOM_ENV_VAR "my_env_value";
之後只要是通過nginx訪問的PHP請求,在任何代碼中中使用 $_SERVER['CUSTOM_ENV_VAR'] 就能取到你需要的值
又或者在fastcgi的配置文件中增加一行:
env[CUSTOM_ENV_VAR]="my_env_value"
之後只要是php-fastcgi處理的PHP文件,都可以通過 getenv('CUSTOM_ENV_VAR'); 來獲取設置的值
如果題主確實打算不親自define而要得到類似E_ALL那樣的常量的話,就需要寫點C了
題主可以新建一個自己的擴展(或者直接隨便找個你會編譯的擴展也行),在PHP_MINIT_FUNCTION中使用以下宏來定義自己的常量
REGISTER_STRINGL_CONSTANT("MY_SITE_VERSION", "1.0", 3, CONST_PERSISTENT);
之後重新編譯PHP即可.
9. php變數定義方法
PHP語法吸收了C語言、java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。以下是為大家分享的php變數定義方法,供大家參考借鑒,歡迎瀏覽!
1.定義常量define("CONSTANT", "Hello world.");
常量只能包含標量數據(boolean,integer,float 和 string)。
調用常量時,只需要簡單的用名稱取得常量的值,而不能加「$」符號,如:echo CONSTANT;
注: 常量和(全局)變數在不同的名字空間中。這意味著例如 TRUE 和 $TRUE 是不同的。
2.普通變數$a = "hello";
3.可變變數(使用兩個美元符號($))
$$a = "world";
兩個變數都被定義了:
$a 的內容是「hello」並且 $hello 的內容是「world」。
因此,可以表述為:
echo "$a ${$a}";或者 echo "$a $hello";它們都會輸出:hello world
要將可變變數用於數組,必須解決一個模稜兩可的問題。這就是當寫下 $$a[1] 時,解析器需要知道是想要 $a[1] 作為一個變數呢,還是想要 $$a 作為一個變數並取出該變數中索引為 [1] 的值。解決此問題的語法是,對第一種情況用 ${$a[1]},對第二種情況用 ${$a}[1]。
4.靜態變數
在函數內部static $a = 0;
注意:聲明中用表達式的結果對其賦值會導致解析錯誤如static $a =3+3;(error)
靜態變數僅在局部函數域中存在(函數內部),函數執行完之後,變數值不會丟失,可用於遞歸調用
5.全局變數
在函數體內定義的global變數,函數體外可以使用,在函數體外定義的global變數不能在函數體內使用,在全局范圍內訪問變數可以用特殊的 PHP 自定義 $GLOBALS 數組:
如:$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
在一個函數域內用 global 語句導入的一個真正的全局變數實際上是建立了一個到全局變數的引用
global $obj;
註:對於變數的 static 和 global 定義是以 應用 的方式實現的
6.給變數賦值:傳地址賦值(簡單引用):
$bar = &$foo; //加&符號到將要賦值的變數前
改動新的變數將影響到原始變數,這種賦值操作更加快速
注意:只有命名變數才可以傳地址賦值
注意:如果
$bar = &$a;
$bar = &$foo;
改變$bar的值只能改變變數foo的值,而不改變a的值(引用改變了)
7.PHP 超全局變數$GLOBALS : 包含一個引用指向每個當前腳本的全局范圍內有效的變數。該數組的鍵標為全局變數的 名稱。從 PHP 3 開始存在 $GLOBALS 數組。
$_SERVER : 變數由 Web 伺服器設定或者直接與當前腳本的執行環境相關聯。類似於舊數組 $HTTP_SERVER_VARS 數組(依然有效,但反對使用)。
$_GET : 經由 HTTP GET 方法提交至腳本的變數。
$_POST : 經由 HTTP POST 方法提交至腳本的變數。
$_COOKIE : 經由 HTTP Cookies 方法提交至腳本的變數。
$_FILES : 經由 HTTP POST 文件上傳而提交至腳本的變數。
文件上傳表單中要有 enctype="multipart/form-data"
$_ENV : 執行環境提交至腳本的變數。
$_REQUEST :經由 GET,POST 和 COOKIE 機制提交至腳本的.變數,因此該數組並不值得信任。所有包含在該數組中的變數的存在與否以及變數的順序均按照 php.ini 中的 variables_order 配置指示來定義。該數組沒有直接模擬 PHP 4.1.0 的早期版本。參見 import_request_variables()。
注意: 自 PHP 4.3.0 起,$_FILES 中的文件信息不再存在於 $_REQUEST 中。
$_SESSION :當前注冊給腳本會話的變數。
如何禁用phpinfo():
php.ini中
disable_functions = phpinfo()
重啟web伺服器。
php中的常量
常量只能用define(常量名,常量值);
常量只能包含標量數據(boolean,integer,float 和 string)。
可以簡單的通過指定其名字來取得常量的值,不要在常量前面加上 $ 符號。如果常量名是動態的,也可以用函數
constant() 來讀取常量的值。用 get_defined_constants() 可以獲得所有已定義的常量列表。
注: 常量和(全局)變數在不同的名字空間中。這意味著例如 TRUE 和 $TRUE 是不同的。
如果使用了一個未定義的常量,PHP 假定想要的是該常量本身的名字,如同用字元串調用它一樣(CONSTANT 對應 "CONSTANT")。此時將發出一個 E_NOTICE 級的錯誤。參見手冊中為什麼 $w3sky[bar] 是錯誤的(除非事先用 define() 將 bar 定義為一個常量)。如果只想檢查是否定義了某常量,用 defined() 函數。
常量和變數不同:
* 常量前面沒有美元符號($);
* 常量只能用 define() 函數定義,而不能通過賦值語句;
* 常量可以不用理會變數范圍的規則而在任何地方定義和訪問;
* 常量一旦定義就不能被重新定義或者取消定義;
* 常量的值只能是標量。
定義常量
<?PHP
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
echo Constant; // outputs "Constant" and issues a notice.
?>
10. PHP:函數內部使用的變數聲明為全局變數時,其名稱要與全局變數名稱一致
下面的信息,是來自互聯網,我就直接粘貼在這里了
PHP的變數分不出是聲明還是使用,($name
不管是聲明還是使用都是一種形式,所以函數中要使用外部的變數就要使用global來確定函數中是使用外部的全局變數,而不是聲明。
php常量默認就是全局的,常量只能定義一次,而且不可以改變。
而javascript聲明變數使用關鍵字varname='hyr';
如果在函數中不聲明就直接用全局的)
-------------------------------------------------------------------------------------------------
不使用global關鍵詞,函數內$a是局部變數,全局的$a=10
;不會改變
<?php
$a=10;
functiontest()
{
$a=
20;
echo
$a;
}
test();//局部變數20
echo
"<br>";
echo$a;//全局變數10
?>
函數內使用global關鍵字聲明$a就是外部全局的$a變數,
函數內global關鍵字聲明的同時不能同時賦值
<?php
$a=10;
functiontest()
{
global
$a;//聲明$a是外部的全局變數$a的同時不能賦值,賦值可以另外起一行賦值,如下行
$a
=20;//聲明函數里使用的$a變數是來自函數外部聲明的全局變數$a
echo
$a;
}
test();//結果為
20
echo
"<br>";
echo$a;//結果也是20
?>