如何使用psr-4作曲家

时间:2016-03-23 01:27:28

标签: php composer-php autoload psr-4 slim-3

为什么找不到带命名空间的类?

错误:

  

致命错误:Class' MyDB \ Panel \ User' /Applications/AMPPS/www/slim/index.php 22

<

根&GT; composer.json

{
"require": {
    "slim/slim": "^3.0",
    "slim/twig-view": "^2.0",
    "illuminate/database": "5.2.*",
    "robmorgan/phinx": "0.5.*",
    "vlucas/valitron": "^1.2"
},
"autoload": {
    "psr-4": {
        "MyDB\\": "src/"
    }
}}

根&GT; SRC&GT; Panel.php

<?php namespace MyDB\Panel;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $table = 'zooUser';

}

根&GT;的index.php

require 'vendor/autoload.php';    
$DB = new \MyDB\Panel\User();

根&GT;卖主GT;作曲家&GT; autoload_psr4.php

'MyDB\\' => array($baseDir . '/src'),

1 个答案:

答案 0 :(得分:0)

根据我目前对PSR-4如何工作的了解,命名空间与文件路径有些直接相关。因此,在您的示例中,MyDB\Panel\User会转换为/src/Panel/User.php。您的类名也必须与文件名相同,因此Panel.php将成为User.php。

如果您想阅读PSR-4或任何其他PSR标准,我建议您查看他们的website

修改

回应@Bahador Raghibizadeh的评论,如果你要为所有课程使用一个文件,你应该使用classmap。另外需要注意的是,每个文件有多个类不符合PSR-2。