[英]Symfony2 won't load custom authentication provider, loads DaoAuthenticationProvider
[英]Symfony ClassLoader won't load
我正在开发一个供个人使用的小型 php 框架。 我正在尝试使用 Symfony 中使用的 UniversalClassLoader 自动加载类,但是当我尝试使用这些类时出现错误
致命错误:在第 14 行的 /opt/lampp/htdocs/web/globeapi/Start.php 中找不到“Controller”类
这是Start.php
文件代码。
require('../libraries/loader/Loader.php');
use Symfony\Component\ClassLoader\UniversalClassLoader;
$auto = require('../config/Auto.php');
$Loader = new UniversalClassLoader();
$Loader->registerNamespaces($auto);
$Loader->register();
Controller::test();
这是Controller类的代码
namespace Libraries\Controller;
class Controller
{
function Controller()
{
}
public static function test()
{
echo 1;
}
}
这是 Auto.php 文件的代码,它返回用于自动加载的类数组。
return array(
'Libraries\Controller' => '../libraries/controller/Controller.php',
'Libraries\Module' => '../libraries/module/Module.php',
'Libraries\View' => '../libraries/view/View.php',
'Libraries\Sammy' => '../libraries/sammy/Sammy.php',
'Libraries\Routes' => '../config/Routes.php'
);
我的答案是使用当前版本的 Symfony (2.2) 和 UniversalClassLoader。 总体思路是遵循 PSR-0 标准,这样您就不必为每个文件定义映射条目。 只需遵循简单的命名和位置约定,您的类就会被找到——整洁,不是吗? :-)(注意目录名和文件名都区分大小写)。
目录结构(vendor目录由composer创建)
app.php
composer.json
src
App
Libraries
Controller
Controller.php
vendor
symfony
class-loader
Symfony
Component
ClassLoader
composer.json
{
"require": {
"symfony/class-loader": "2.2.*"
}
}
app.php的内容:
require_once 'vendor/symfony/class-loader/Symfony/Component/ClassLoader/UniversalClassLoader.php';
use Symfony\Component\ClassLoader\UniversalClassLoader;
$loader = new UniversalClassLoader();
$loader->registerNamespace('App', 'src');
$loader->register();
\App\Libraries\Controller\Controller::test();
最后是控制器类:
//src/App/Libraries/Controller/Controller.php
namespace App\Libraries\Controller;
class Controller
{
public static function test()
{
echo 1;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.