簡體   English   中英

Symfony ClassLoader 不會加載

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM