Why include __DIR__ in the require_once?

一个人想着一个人 提交于 2019-11-29 06:10:57

问题


For example, I always see autoloaders called like this:

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

What is the difference between that and the more concise

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

?


回答1:


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.




回答2:


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.



来源:https://stackoverflow.com/questions/32444572/why-include-dir-in-the-require-once

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!