日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php __FILE__,__CLASS__等魔术变量,及实例

發布時間:2023/12/19 php 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php __FILE__,__CLASS__等魔术变量,及实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

php __FILE__,__CLASS__等魔術變量,及實例

今天看到一個魔術變量,是以前沒見過的,__DIR__,我查了查,發現原來是php5.3新增的,順便舉幾個例子,解釋一下php的魔術變量

1,__FILE__

文件的完整路徑和文件名。如果用在被包含文件中,則返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 總是包含一個絕對路徑(如果是符號連接,則是解析后的絕對路徑),而在此之前的版本有時會包含一個相對路徑。
這個變量,我用的是最多的,估計也是大家用的最多的。

web服務器都會指定一個documentroot的,但是不同的服務器,設置的documentroot有可能是不同的,在這種情況下,把一個網站從一個服務器搬家到另一個服務器,這樣就有可能因為路徑的不同,造成網站跑不起來。

  • <?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__

    文件中的當前行號。這個變量在調試錯誤的時候,還是比較有作用的,其他的時候,沒什么用處,純屬個人觀點。

  • <?php??
  • echo?__LINE__;??//顯示,__LINE__所在的行號??
  • ?>??
  • 3,__CLASS__

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

  • <?php??
  • class?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中返回的結果是區分大小寫的

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

  • <?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('__DIR__'))?{??
  • ?$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"??
  • ?>?
  • 轉載于:https://www.cnblogs.com/gaogaoxingxing/p/7691521.html

    總結

    以上是生活随笔為你收集整理的php __FILE__,__CLASS__等魔术变量,及实例的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。