4
考虑到与以下结构的PHP应用程序:如何以兼容的方式将PHP文件包含在Phar和Phar中进行打包?
/
lib/
mylib.php
web/
index.php // includes "mylib.php" with: require_once __DIR__ . "/../lib/mylib.php"
我试图在同一时间以相同的源代码库涵盖以下情况:
- 没有的Phar:能使用该应用程序,DocumentRoot指向web/并将所有请求重定向到index.php。
- 最小的Phar:能够产生一个只包含网/ index.php文件这将被保存为药业:网络/应用minimal.phar。
- 完整的Phar:能产生既包含的lib目录和网/ index.php文件这将被保存为的内容药业:网络/应用full.phar。
对于phar文件,所有请求都会被重定向到phar文件本身。
是否有可能实现所有这些用例而不必更改* require_once *?
我尝试不同的方法(相对/绝对),包括的lib/mylib.php从*网络/ index.php文件”,以及尝试一些技巧与的Phar ::安装()。没有我尝试成功
,将肯定有几个原因无法正常工作:1。 通过set_include_path()从内部药业将导致相同问题,'''__DIR__'''为''''phar://.../path/to/phar“'''而库不在PHAR文件中。 2.库通常在目录中包含大量不同的文件,你不能简单地添加每个目录,这将非常缓慢(路径中的所有条目将被扫描以找到该文件),并且不起作用:例如。 'Symfony/Component/Config/Loader/Loader.php'''''Symfony/Component/Templating/Loader/Loader.php'''包括'''Loaded.php''',真的吗? – 2013-03-11 11:05:07
我说的是PSR-0兼容自动加载,当然你应该设置不同的包含路径,具体取决于你是否在phar中。 – cweiske 2013-03-11 11:22:40