mar*_*ark 4 php cakephp namespaces cakephp-2.2
我想使用一个使用命名空间的css解析器.我把文件放在供应商和应用程序中导入它.但脚本本身似乎没有找到它的类
在我的班级顶部我导入文件:
App::import('Vendor', 'Sabberworm', array('file' => 'Sabberworm/CSS/Parser.php'));
Run Code Online (Sandbox Code Playgroud)
在/ root/vendors/Sabberworm/CSS /中(所有文件都在此命名空间中)
在我的类方法中,我创建了一个新实例:
public function parse($content) {
$oParser = new Sabberworm\CSS\Parser($content);
...
}
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.但如果我现在想把$oCss = $oParser->parse();它称为致命错误:
"Fatal error: Class 'Sabberworm\CSS\CSSList\Document'"
Run Code Online (Sandbox Code Playgroud)
它失败然后因为它需要其他文件(应该使用命名空间加载).根供应商文件夹位于包含路径中,外部脚本似乎将命名空间设置为"命名空间Sabberworm\CSS;".我错过了什么?我是命名空间的新手.
将其添加到bootstrap
spl_autoload_register(function($class) {
foreach(App::path('Vendor') as $base) {
$path = $base . str_replace('\\', DS, $class) . '.php';
if (file_exists($path)) {
return include $path;
}
}
});
Run Code Online (Sandbox Code Playgroud)
或者只是在函数内部:
$path = APP . 'Vendor' . DS . str_replace('\\', DS, $class) . '.php';
if (file_exists($path)) {
include $path;
}
Run Code Online (Sandbox Code Playgroud)