【问题标题】:Understanding psr-4 autoload function with composer用 Composer 理解 psr-4 自动加载功能
【发布时间】:2017-05-21 12:36:47
【问题描述】:

我正在尝试用 composer 来理解自动加载部分。附图是我的项目结构。

index.php

require __DIR__ . '/vendor/autoload.php';

// require "app/Controller/MyController.php"; // If i uncomment this my code is working fine. (only for testing purpose)

$mynamespace = new App\Controller\MyController();

$mynamespace->index();

composer.json

"psr-4": {
         "App\\": "app/" 
         }

MyController.php

namespace App\Controller;

class MyController{


    public function index(){
        echo "New  World";
    }
}

我运行了 composer dump-autoload 并且文件没有加载。

如何通过 composer 映射自动加载的文件?我可能会使用多个文件夹和文件。所以我更喜欢它是一个单一的目录作为 app/

【问题讨论】:

  • 您的MyController.php 文件是什么样的?
  • 另外你跑composer install了吗?
  • 没有变化..我仍然找不到课程
  • 你的作曲家怎么样,能更新一下吗?你也可以发布整个composer.json吗?
  • 我明白了。我错过了 composer.json 中的自动加载。感谢您指点重新检查composer.json

标签: php composer-php autoload


【解决方案1】:
{
    "name": "alaksandarjesus/testnamespace",
    "authors": [{
        "name": "alaksandarjesus",
        "email": "abc@yahoo.co.in"
    }],
    "require": {},
    "autoload": { // Missed this autoload and so it didnt load.
        "psr-4": {
            "App\\": "app"
        }
    }

}

【讨论】:

    【解决方案2】:

    想不通,所以不确定是否有帮助:

    require __DIR__ . '/vendor/autoload.php';
    
    use App\Controller\MyController;
    
    $mynamespace = new MyController();
    
    $mynamespace->index();
    

    或者可能转义顶级命名空间:

    $mynamespace = new \App\Controller\MyController();
    

    【讨论】:

      猜你喜欢
      • 2015-04-20
      • 2014-07-25
      • 2018-07-25
      • 2014-08-12
      • 1970-01-01
      • 2017-09-15
      • 2014-11-01
      • 2014-03-24
      • 2018-06-01
      相关资源
      最近更新 更多