如何在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