Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony ClassLoader赢得';t载荷_Php_Symfony_Psr 0_Spl Autoloader - Fatal编程技术网

Php Symfony ClassLoader赢得';t载荷

Php Symfony ClassLoader赢得';t载荷,php,symfony,psr-0,spl-autoloader,Php,Symfony,Psr 0,Spl Autoloader,我正在开发一个供个人使用的小型php框架。我正在尝试使用Symfony中使用的UniversalClassLoader自动加载类,但当我尝试使用这些类时,出现了错误 致命错误:在第14行的/opt/lampp/htdocs/web/globeapi/Start.php中找不到类“Controller” 下面是Start.php文件代码 require('../libraries/loader/Loader.php'); use Symfony\Component\ClassLoader

我正在开发一个供个人使用的小型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();
下面是控制器类的代码

    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标准,这样就不必为每个文件定义映射条目。只需遵循简单的命名和位置约定,就可以找到您的类-整洁,不是吗?:-)(请注意,目录名和文件名都区分大小写)

目录结构(供应商目录由composer创建)

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;
    }
}
最后是控制器类

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

Does\Libraries\Controller::test();工作提示:使用通用类加载器,不需要有一个包含所有类和文件的数组。请仔细查看\Libraries\Controller::test();不起作用