Zen*_*hai 4 php directory silex
DIR是一个魔法常量,如PHP 文档中所述。根据PHP 文档, getcwd() 只是当前工作目录。
我的用例是:
// this is my index.php file
require_once __DIR__ . '/vendor/autoload.php';
$app = new Silex\Application();
$app['debug'] = true;
$app->get('/{name}', function($name) use($app) {
return $app->sendFile(__DIR__ . '/web/source/index.php');
});
Run Code Online (Sandbox Code Playgroud)
我不完全理解为什么我需要这些机制中的任何一个,因为我应该能够使用相对路径。
但是,如果没有它,代码就会失败。
假设你有脚本
<?php
echo __DIR__, ' | ', getcwd();
include 'subdir/foo.php';
Run Code Online (Sandbox Code Playgroud)
它作为主脚本执行(因为浏览器请求或者它是 php-cli 调用的主脚本)。
并且subdir/foo.php是除了相同include。
主脚本的输出可能类似于
/path | /path
Run Code Online (Sandbox Code Playgroud)
但subdir/foo.php主脚本包含时的输出将是
/path/subdir | /path
Run Code Online (Sandbox Code Playgroud)
__DIR__ 反映了当前脚本文件所在的目录。
但是 include() 没有改变当前的工作目录,所以 getcwd() 的输出仍然是/path。