namespaces - 我不能在 Symfony 1.4 中使用来自 Symfony2 的 Autoloader 来加载这个命名空间类

标签 namespaces classloader symfony-1.4 autoload

我想在我的 Symfony 1.4 项目中使用这个带有命名空间类的 php 库:https://github.com/donquixote/cellbrush .

我不太熟悉命名空间的概念。所以当我第一次尝试使用这个库的主类时,根据它的文档,我只是做了:

$table = \Donquixote\Cellbrush\Table\Table::create();

我得到了这个 fatal error :

Fatal error: Class 'Donquixote\Cellbrush\Table\Table' not found in D:\SF_ROOT_DIR\apps\frontend\modules\home\actions\actions.class.php



所以我搜索了一个解决方案,据说有一个:stackoverflow sol 1 , stackoverflow sol 1 eg ,但是当我尝试实现它时,我仍然收到上述错误。

我的情况:

感兴趣的目录和文件:

D:\SF_ROOT_DIR\lib\autoload\sfClassLoader.class.php

D:\SF_ROOT_DIR\lib\vendor\ClassLoader (contains: https://github.com/symfony/ClassLoader/tree/2.6)

D:\SF_ROOT_DIR\lib\vendor\cellbrush-1.0 (contains: https://github.com/donquixote/cellbrush.)



代码:

SF_ROOT_DIR/config/ProjectConfiguration.class.php
require_once dirname(__FILE__).'/../lib/vendor/symfony/lib/autoload/sfCoreAutoload.class.php';
require_once dirname(__FILE__) . '/../lib/autoload/sfClassLoader.class.php';

use Symfony\Component\ClassLoader\UniversalClassLoader; 
use Symfony\Component\ClassLoader\ApcUniversalClassLoader;

sfCoreAutoload::register();

class ProjectConfiguration extends sfProjectConfiguration
{
  public function setup()
  {
    $this->namespacesClassLoader();
    $this->enableAllPluginsExcept('sfPropelPlugin');
  }

   public function namespacesClassLoader() {
       if (extension_loaded('apc')) {
           $loader = new ApcUniversalClassLoader('S2A');
       } else {
           $loader = new UniversalClassLoader();
       }
       $loader->registerNamespaces(array(
          'Donquixote' => __DIR__ . '/../lib/vendor/cellbrush-1.0/src/Table'));
       $loader->register();
    }
}

Action 类.php
$table = \Donquixote\Cellbrush\Table\Table::create();

谢谢。

最佳答案

使用 composer 及其自动加载。

执行:

composer require donquixote/cellbrush

现在库安装在供应商目录中并生成自动加载器,您只需要包含它。将此行添加到 config/ProjectConfiguration.class.php 的顶部:
require_once dirname(__FILE__).'/../vendor/autoload.php';

关于namespaces - 我不能在 Symfony 1.4 中使用来自 Symfony2 的 Autoloader 来加载这个命名空间类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30316687/

相关文章:

python - 对带有字典的 Python 命名空间感到好奇

.net - 删除根节点下的所有命名空间

c# - XPATHS 和默认命名空间

java - Java类是由第一次使用它的线程初始化的吗?

javascript - 我有 symfony 版本 1.4 。我想知道是否可以从 1.4 升级到 3

php - 在 Symfony 中使用 PHP 简单 HTML DOM 解析器时出错

php - 在 PHP 中使用命名空间中的静态函数作为回调

java - 类锁定与 java 类加载器有关吗?

java - 类加载器如何找到类

mysql - 带有选定列的 Symfony 1.4 选择查询不起作用