PHP 超全局變量 and 魔術常量

 

1.PHP 超級全局變量:PHP中預約義了幾個超級全局變量(superglobals) ,這意味着它們在一個腳本的所有做用域中均可用。 你不須要特別說明,就能夠在函數及類中使用。php

1.1 PHP $GLOBALShtml

$GLOBALS 是PHP的一個超級全局變量組,在一個PHP腳本的所有做用域中均可以訪問。web

$GLOBALS 是一個包含了所有變量的全局組合數組。變量的名字就是數組的鍵。數組

<?php 
$x = 75; 
$y = 25;
 
function addition() 
{ 
    $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; 
}
 
addition(); 
echo $z; 
?>

以上實例中 z 是一個$GLOBALS數組中的超級全局變量,該變量一樣能夠在函數外訪問。服務器

1.2 PHP $_SERVER函數

$_SERVER 是一個包含了諸如頭信息(header)、路徑(path)、以及腳本位置(script locations)等等信息的數組。這個數組中的項目由 Web 服務器建立。不能保證每一個服務器都提供所有項目;服務器可能會忽略一些,或者提供一些沒有在這裏列舉出來的項目。post

<?php 
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>

運行結果:spa

/try/demo_source/demo_global_server.php(當前執行腳本的文件名)
www.runoob.com(當前運行腳本所在的服務器的主機名。若是腳本運行於虛擬主機中,該名稱是由那個虛擬主機所設置的值決定。如: www.runoob.com)
www.runoob.com(當前請求頭中 Host: 項的內容,若是存在的話。)
https://www.runoob.com/try/showphp.php?filename=demo_global_server(引導用戶代理到當前頁的前一頁的地址(若是存在)。由 user agent 設置決定。並非全部的用戶代理都會設置該項,有的還提供了修改 HTTP_REFERER 的功能。簡言之,該值並不可信。))
Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36
/try/demo_source/demo_global_server.php(含當前腳本的路徑。這在頁面須要指向本身時很是有用。__FILE__ 常量包含當前腳本(例如包含文件)的完整路徑和文件名)代理

1.3 PHP $_REQUEST code

PHP $_REQUEST 用於收集HTML表單提交的數據。

如下實例顯示了一個輸入字段(input)及提交按鈕(submit)的表單(form)。 當用戶經過點擊 "Submit" 按鈕提交表單數據時, 表單數據將發送至<form>標籤中 action 屬性中指定的腳本文件。 在這個實例中,咱們指定文件來處理表單數據。

<html>
<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>

<?php 
$name = $_REQUEST['fname']; 
echo $name; 
?>

</body>
</html>

1.4 PHP $_POST

PHP $_POST 被普遍應用於收集表單數據,在HTML form標籤的指定該屬性:"method="post"

如下實例顯示了一個輸入字段(input)及提交按鈕(submit)的表單(form)。 當用戶經過點擊 "Submit" 按鈕提交表單數據時, 表單數據將發送至<form>標籤中 action 屬性中指定的腳本文件。 在這個實例中,咱們指定文件來處理表單數據。若是你但願其餘的PHP文件來處理該數據,你能夠修改該指定的腳本文件名。 而後,咱們可使用超級全局變量 $_POST 來收集表單中的 input 字段數據:

<html>
<body>
 
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
 
<?php 
$name = $_POST['fname']; 
echo $name; 
?>
 
</body>
</html>

1.5  PHP $_GET

PHP $_GET 一樣被普遍應用於收集表單數據,在HTML form標籤的指定該屬性:"method="get"

$_GET 也能夠收集URL中發送的數據。

假定咱們有一個包含參數的超連接HTML頁面:

<html>
<body>

<a href="test.php?subject=PHP&web=W3school.com.cn">Test $GET</a>

</body>
</html>

當用戶點擊連接 "Test $GET", 參數 "subject" 和 "web" 將發送至"test.php",你能夠在 "get.php" 文件中使用 $_GET 變量來獲取這些數據。

如下實例顯示了 "test.php" 文件的代碼:

<html>
<body>
 
<?php 
echo "Study " . $_GET['subject'] . " @ " . $_GET['web'];
?>
 
</body>
</html>

2. PHP 魔術常量

2.1 __LINE__ 文件中的當前行號。

<?php
echo '這是第 " '  . __LINE__ . ' " 行';
?>

以上實例輸出結果爲:

這是第 「 2 」 行

2.2 __FILE__ 文件的完整路徑和文件名。若是用在被包含文件中,則返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 老是包含一個絕對路徑。

<?php
echo '該文件位於 " '  . __FILE__ . ' " ';
?>

以上實例輸出結果爲:

該文件位於 「 E:\wamp\www\test\index.php 」

2.3 __DIR__

文件所在的目錄。若是用在被包括文件中,則返回被包括的文件所在的目錄。

它等價於 dirname(__FILE__)。除非是根目錄,不然目錄中名不包括末尾的斜槓。

<?php
echo '該文件位於 " '  . __DIR__ . ' " ';
?>

以上實例輸出結果爲:

該文件位於 「 E:\wamp\www\test 」

2.4 __FUNCTION__  函數名稱(PHP 4.3.0 新加)。自 PHP 5 起本常量返回該函數被定義時的名字(區分大小寫)。在 PHP 4 中該值老是小寫字母的。

<?php
function test() {
    echo  '函數名爲:' . __FUNCTION__ ;
}
test();
?>

以上實例輸出結果爲:

函數名爲:test

2.5 __CLASS__ 

類的名稱(PHP 4.3.0 新加)。自 PHP 5 起本常量返回該類被定義時的名字(區分大小寫)。

在 PHP 4 中該值老是小寫字母的。類名包括其被聲明的做用區域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 對 trait 也起做用。當用在 trait 方法中時,__CLASS__ 是調用 trait 方法的類的名字。

<?php
class test {
    function _print() {
        echo '類名爲:'  . __CLASS__ . "<br>";
        echo  '函數名爲:' . __FUNCTION__ ;
    }
}
$t = new test();
$t->_print();
?>

以上實例輸出結果爲:

類名爲:test
函數名爲:_print
相關文章
相關標籤/搜索