php系統常數魔術方法說明和魔術變數用法實例總結

伊谢尔伦
發布: 2023-03-14 09:28:02
原創
1155 人瀏覽過

系統常數

FILE 目前檔案名稱
LINE 目前行數
FUNCTION 目前函數名稱
CLASS 目前類別名稱
METHOD 目前物件的方法名

詳細分析

1. FILE

檔案的完整路徑和檔案名稱。如果用在被包含檔案中,則傳回被包含的檔案名稱。自 PHP 4.0.2 起,FILE 總是包含一個絕對路徑(如果是符號連接,則是解析後的絕對路徑),而在此之前的版本有時會包含一個相對路徑。
PHP 常數dirname(file) 
FILE :稱為PHP魔術常數,傳回目前執行PHP腳本的完整路徑與檔名,包含一個絕對路徑 

1 )dirname(FILE) 函數傳回的是腳本所在的路徑。 更新網路 
例如檔案b.php 包含以下內容:  

<?php   
$basedir = dirname(FILE);   
echo $basedir  
//将在页面打印出一个这个文件所在绝对路径!  
?>
登入後複製

這個相當於, asp中的server.mappth的用法 
如果b.php被其他目錄裡的a.php檔案require或者include 去引用的話。 變數$basedir 的內容還是b.php所在的那個資料夾的路徑。 而不是變成a.php檔案所在的目錄。

2)dirname(FILE) 一般會傳回檔案所的目前目錄到系統根目錄的一個目錄結構。 
不會傳回目前的檔案名稱。 dirname(FILE) 也可能回傳一個。(當前目錄) [原因是b.php 檔案在 http.conf 或PHP 配置開發環境的預設WEB目錄下

<?php
/**
在你的公用的配置文件中,来设置你的根目录,这样就不用担心经常搬家了。
*/
define(&#39;ROOT_PATH&#39;, dirname(FILE) . DIRECTORY_SEPARATOR);
echo ROOT_PATH;
echo "<br>";
echo FILE;
echo "<br>";
echo dirname(FILE);
echo "<br>";
echo dirname(dirname(FILE));
?>
登入後複製





##2. LINE



檔案中的目前行號。這個變數在調試錯誤的時候,還是比較有作用的,其他的時候,沒什麼用處

<?php
echo LINE;  //显示,LINE所在的行号
?>
登入後複製


#3. CLASS


類別的名稱,PHP5回傳的結果是區分大小寫的

<?php
class base_class
{
function say_a()
{
echo "&#39;a&#39; – said the " . CLASS . "<br/>";
}
function say_b()
{
echo "&#39;b&#39; – said the " . get_class($this) . "<br/>";
}
}
class derived_class extends base_class
{
function say_a()
{
parent::say_a();
echo "&#39;a&#39; – said the " . CLASS . "<br/>";
}
function say_b()
{
parent::say_b();
echo "&#39;b&#39; – said the " . get_class($this) . "<br/>";
}
}
$obj_b = new derived_class();
$obj_b->say_a();
echo "<br/>";
$obj_b->say_b();
?>
登入後複製

結果為:

&#39;a&#39; – said the base_class
&#39;a&#39; – said the derived_class
&#39;b&#39; – said the  derived_class
&#39;b&#39; – said the derived_class
登入後複製
有的時候,我們可以用get_class來取代CLASS


##4. FUNCTION和METHOD

FUNCTION:函數名稱,php5中傳回的結果是區分大小寫的METHOD:方法中的函數名稱,php5中傳回的結果是區分大小寫的

二個都是取得方法的名稱,有什麼不同呢?

<?php
class test
{
function a()
{
echo FUNCTION;
echo "<br>";
echo METHOD;
}
}
function good (){
echo FUNCTION;
echo "<br>";
echo METHOD;
}
$test = new test();
$test->a();
echo "<br>";
good();
?>
登入後複製
返回結果:

a
test::a
good
good
登入後複製

相對於孤立的函數來說,二個都可以取出函數名,沒什麼區別,如果是class中的方法時,FUNCTION只能取出class的方法名,而METHOD不光能取出方法名,還能取出class名

#5. DIR

#####檔案所在的目錄。如果用在被包含檔案中,則傳回被包含的檔案所在的目錄。它等價於 dirname(FILE)。除非是根目錄,否則目錄中名不包括末尾的斜杠。 (PHP 5.3.0新增)###如果在5.3以前的版本中想用DIR的話,可以這樣###
<?php
if(!defined(&#39;DIR&#39;)) {
$iPos = strrpos(FILE, "/");
define("DIR", substr(FILE, 0, $iPos) . "/");
}
?>
登入後複製
######6. NAMESPACE##########目前# ##命名空間###的名稱(大小寫敏感)。這個常數是在編譯時定義的(PHP 5.3.0 新增)#########7.STATIC#########當你呼叫class的靜態方法時,傳回class名稱,區分大小寫。如果在繼承中呼叫的話,不管在繼承中有沒有定義,都能傳回繼承的class名稱。 ###
<?php
//php5.3
class Model
{
public static function find()
{
echo STATIC;
}
}
class Product extends Model {}
class User extends Model {}
Product::find(); // "Product"
User::find(); // "User"
?>
登入後複製

以上是php系統常數魔術方法說明和魔術變數用法實例總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!