php - 为什么在 require_once 中包含 __DIR__?

标签 php autoloader

例如,我总是看到这样调用的自动加载器:

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

那和更简洁的有什么区别

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

?

最佳答案

PHP 脚本相对于当前路径(getcwd() 的结果)运行,而不是它们自己文件的路径。使用 __DIR__ 强制包含相对于它们自己的路径发生。

为了演示,创建以下文件(和目录):

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

如果 file2.php 像这样包含 file3.php:

include `file3.php`.

如果您直接调用file2.php 就可以正常工作。但是,如果 file1.php includes file2.php,则当前目录 (getcwd()) 将是file2.php 错误,因此无法包含 file3.php

关于php - 为什么在 require_once 中包含 __DIR__?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32444572/

相关文章:

PHP 未捕获错误 : Class not found using composer autoload

php - 删除 XML 中的属性

php - 根据目录结构自动加载命名空间

php - Laravel schedule - 每小时,每天 - 了解何时开始

php - mysql PHP查询包含连接计数

php - Zend 1 3d party NameSpaces 自动加载不起作用

php - 在 Symfony2 项目上使用外部非 PSR-0 库的正确方法

php - PHP中包含的几个函数文件

php - Doctrine_Core::getTable()->findAll() 如何指定顺序?