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