Is there any difference between __DIR__ and dirname(__FILE__) in PHP?

前端 未结 1 1901
日久生厌
日久生厌 2020-12-02 05:44

It looks the same for me,but I\'m not sure,

because there are many projects that uses dirname(__FILE__).

相关标签:
1条回答
  • 2020-12-02 06:33

    Their result is exactly the same ; so, no difference on that.


    For example, the two following lines :

    var_dump(dirname(__FILE__));
    var_dump(__DIR__);
    

    Will both give the same output :

    string '/home/squale/developpement/tests/temp' (length=37)
    


    But, there are at least two differences :

    • __DIR__ only exists with PHP >= 5.3
      • which is why dirname(__FILE__) is more widely used
    • __DIR__ is evaluated at compile-time, while dirname(__FILE__) means a function-call and is evaluated at execution-time
      • so, __DIR__ is (or, should be) faster.


    As, as a reference, see the Magic constants section of the manual (quoting) :

    __DIR__ : The directory of the file.
    If used inside an include, the directory of the included file is returned.
    This is equivalent to dirname(__FILE__).
    This directory name does not have a trailing slash unless it is the root directory.
    (Added in PHP 5.3.0.)

    0 讨论(0)
提交回复
热议问题