如何在Symfony 1.4中爲自動加載器類功能(如Symfony 2.0)註冊名稱空間(使用PHP 5.3)?使用Symfony 1.4的自動加載器加載命名空間類?
回答
您可以在Symfony 1.4框架中使用Symfony2中的Autoloader。
1.複製Symfony2的類加載器到你的Symfony 1.4沙箱項目的供應商目錄:
SF_ROOT_DIR/lib中/供應商/ Symfony2的/ src目錄/ Symfony的/組件/類加載器/ UniversalClassLoader.php
SF_ROOT_DIR/lib中/供應商/ Symfony2的/ src目錄/ Symfony的/組件/類加載器/ ApcUniversalClassLoader.php
2.修改你的S F_ROOT_DIR /配置/ ProjectConfiguration.class.php文件,如下所示:
require_once dirname(__FILE__) . '/../lib/vendor/symfony/lib/autoload/sfCoreAutoload.class.php';
require_once dirname(__FILE__) . '/../lib/autoload/sfClassLoader.class.php';
sfCoreAutoload::register();
class ProjectConfiguration extends sfProjectConfiguration {
public function setup() {
$this->namespacesClassLoader();
$this->enablePlugins('sfDoctrinePlugin');
}
public function namespacesClassLoader() {
if (extension_loaded('apc')) {
$loader = new ApcUniversalClassLoader('S2A');
} else {
$loader = new UniversalClassLoader();
}
$loader->registerNamespaces(array(
'Pohon' => __DIR__ . '/../lib/vendor/Pohon/src'));
$loader->register();
}
}
3.註冊所需的命名空間:
如。我想加載類:
Pohon \ Tools \ String \ Utils \ Slugify。
文件名必須是:
SF_ROOT_DIR/LIB /供應商/ Pohon/SRC/Pohon /工具/字符串/的Utils/Slugify.php
和註冊名稱空間,如下所示:
Pohon => SF_ROOT_DIR/LIB /供應商/ Pohon/SRC
Autoloader項目可以在這裏找到:https://github.com/Symfony-Plugins/sfClassLoaderPlugin。 – 2012-12-21 02:26:48
Breautiful,謝謝!我不得不添加'使用Symfony \ Component \ ClassLoader \ UniversalClassLoader; 使用Symfony \ Component \ ClassLoader \ ApcUniversalClassLoader;在ProjectConfiguraration.class.php文件中導入之後。另外,下面是ClassLoader bundle的鏈接(在這些類被棄用之前):https://github.com/symfony/ClassLoader/tree/2.6 – GermanK 2015-03-29 17:58:29
Symfony使用spl_autoload_register()
函數來註冊自己的自動裝載器(sfAutoload
)。
您可以在Project/Application/Plugin的initialize()
函數中註冊您自己的處理函數。 (以適用者爲準)。
例如,這也是Swift_Mailer
插件的作用:它在需要時註冊自己的自動裝載器。
您可以使用Composer,這很容易。只要你的機器上安裝它(你可能已經因爲它是2015年至今),並在你的項目文件夾中運行:
composer init
然後,您可以安裝所有你想與作曲家,包括您在ProjectConfiguration.class.php
只是這一行的包:
require_once __DIR__.'/../vendor/autoload.php';
請注意,如果更改默認的Symfony1.4目錄結構,路徑可能會有所不同。
Symfony 1.4不知道如何在命名空間中加載類,您必須實現此功能。 Composer只是一個package/lib管理器。 – 2015-04-09 23:33:48
Composer確實也提供ClassLoader,當您安裝(使用Composer俚語「require」)包時,您只需要在上面包含'vendor/autoload.php'腳本。 Composer負責映射所有已安裝軟件包中的名稱空間。你試過了嗎?我這樣做,它很好地工作。 – ggioffreda 2015-04-10 01:45:12
感謝您爲我解決這個問題。您需要指定vendor-dir:「lib/vendor」以在sf 1.4的原始供應商目錄中擁有庫;用於amp-library,它工作正常。 – Naeh 2016-08-10 11:54:22
- 1. 我無法在Symfony 1.4中使用Symfony 1.4中的自動加載器加載這個命名空間類
- 2. 命名空間和自動加載錯誤,如何正確使用自動加載的PHP命名空間?
- 3. SPL自動加載和命名空間
- 4. PHP命名空間和自動加載
- 5. 自動加載和命名空間
- 6. 動態加載命名空間和類
- 7. 動態加載命名空間類
- 8. PHP命名空間自動加載
- 9. php命名空間和自動加載
- 10. PHP:使用命名空間自動加載多個類
- 11. 自動加載使用名稱空間
- 12. 找不到使用命名空間和自動加載器的類
- 13. 使用PHP 5.3命名空間的Zend資源自動加載
- 14. 是「使用命名空間」是指加載該命名空間
- 15. PHP OOP自動加載類命名空間問題
- 16. ZF2 - 包括(自動加載)類/命名空間,所有模塊
- 17. 使用Symfony自動加載器
- 18. 擴展Yii自動加載器以加載使用Zend約定命名的類
- 19. Symfony自動加載器組件不會加載我的類
- 20. 作曲家自動加載命名空間缺失?
- 21. PHP自動加載磁帶機添加命名空間路徑
- 22. Symfony 2試圖從命名空間加載類「」你忘了另一個命名空間的「使用」語句嗎?
- 23. Rails命名空間和STI問題 - 加入自動加載
- 24. Symfony 1.4 - 無法加載cacheHelper.php
- 25. 添加全局命名空間來PSR4自動加載
- 26. Symfony的類加載器不會加載
- 27. Yii自動加載名稱空間
- 28. 在自動加載器的全局上下文中使用命名空間
- 29. PHP:自動加載PSR-0命名空間類中的PEAR命名空間類衝突
- 30. ZF命名空間自動加載機連接自舉
你最終能夠得到Symfony 1.4自動加載的命名空間嗎?如果是這樣,你能讓我知道如何? – 2012-12-19 03:00:10