php系統常量魔術方法說明和魔術變數用法執行個體總結

來源:互聯網
上載者:User
系統常量

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('ROOT_PATH', dirname(FILE) . DIRECTORY_SEPARATOR);echo ROOT_PATH;echo "<br>";echo FILE;echo "<br>";echo dirname(FILE);echo "<br>";echo dirname(dirname(FILE));?>


2. LINE

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

<?phpecho LINE;  //顯示,LINE所在的行號?>


3. CLASS
類的名稱,PHP5返回的結果是區分大小寫

<?phpclass base_class{function say_a(){echo "'a' – said the " . CLASS . "<br/>";}function say_b(){echo "'b' – said the " . get_class($this) . "<br/>";}}class derived_class extends base_class{function say_a(){parent::say_a();echo "'a' – said the " . CLASS . "<br/>";}function say_b(){parent::say_b();echo "'b' – said the " . get_class($this) . "<br/>";}}$obj_b = new derived_class();$obj_b->say_a();echo "<br/>";$obj_b->say_b();?>

結果為:

'a' – said the base_class'a' – said the derived_class'b' – said the  derived_class'b' – said the derived_class

有的時候,我們可以用get_class來代替CLASS

4. FUNCTION和METHOD

FUNCTION:函數名稱,php5中返回的結果是區分大小寫
METHOD:方法中的函數名稱,php5中返回的結果是區分大小寫
二個都是取得方法的名稱,有什麼不同呢?

<?phpclass 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();?>

返回結果:

atest::agoodgood

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

5. DIR

檔案所在的目錄。如果用在被包括檔案中,則返回被包括的檔案所在的目錄。它等價於 dirname(FILE)。除非是根目錄,否則目錄中名不包括末尾的斜杠。(PHP 5.3.0中新增)
如果在5.3以前的版本中想用DIR的話,可以這樣

<?phpif(!defined('DIR')) {$iPos = strrpos(FILE, "/");define("DIR", substr(FILE, 0, $iPos) . "/");}?>

6. NAMESPACE

當前命名空間的名稱(大小寫敏感)。這個常量是在編譯時間定義的(PHP 5.3.0 新增)

7. STATIC

當你調用class的靜態方法時,返回class名稱,區分大小寫。如果在繼承中調用的話,不管在繼承中有沒有定義,都能返回繼承的class名。

<?php//php5.3class Model{public static function find(){echo STATIC;}}class Product extends Model {}class User extends Model {}Product::find(); // "Product"User::find(); // "User"?>
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.