我想在我的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 1,stackoverflow 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();
感谢。
答案 0 :(得分:1)
使用composer及其自动加载。
执行:
composer require donquixote/cellbrush
现在库安装在供应商目录中并生成自动加载器,您只需要包含它。将此行添加到config/ProjectConfiguration.class.php
的顶部:
require_once dirname(__FILE__).'/../vendor/autoload.php';