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

时间:2015-05-19 04:18:18

标签: namespaces classloader symfony-1.4 autoload

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

我不太熟悉名称空间概念。因此,当我试着使用这个库的主类时,根据它的文档,我刚刚做了:

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

我得到了这个致命的错误:

  

致命错误:在D:\ SF_ROOT_DIR \ apps \ frontend \ modules \ home \ actions \ actions.class.php

中找不到类'Donquixote \ Cellbrush \ Table \ Table'

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

我的情况:

感兴趣的目录和文件:

  

d:\ SF_ROOT_DIR \ lib中\自动加载\ sfClassLoader.class.php

     

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

     

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

代码:

SF_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';

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();
    }
}

的actions.class.php

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

感谢。

1 个答案:

答案 0 :(得分:1)

使用composer及其自动加载。

执行:

composer require donquixote/cellbrush

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

require_once dirname(__FILE__).'/../vendor/autoload.php';