Why include __DIR__ in the require_once?

后端 未结 2 1372
旧时难觅i
旧时难觅i 2020-12-30 01:18

For example, I always see autoloaders called like this:

require_once __DIR__ . \'/../vendor/autoload.php\';

What is the difference between

相关标签:
2条回答
  • 2020-12-30 01:21

    For include its possible to set some folders where PHP search automatically. When you include a file with a relative path you search in all of that folders. Its better to define the real path to prevent some errors in loading wrong files.

    https://secure.php.net/manual/en/function.set-include-path.php

    Then you can be sure that you load the correct file.

    0 讨论(0)
  • 2020-12-30 01:37

    PHP scripts run relative to the current path (result of getcwd()), not to the path of their own file. Using __DIR__ forces the include to happen relative to their own path.

    To demonstrate, create the following files (and directories):

    - file1.php
    - dir/
       - file2.php
       - file3.php
    

    If file2.php includes file3.php like this:

    include `file3.php`.
    

    It will work fine if you call file2.php directly. However, if file1.php includes file2.php, the current directory (getcwd()), will be wrong for file2.php, so file3.php cannot be included.

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