作曲家-找不到课程

时间:2020-11-04 18:49:39

标签: php namespaces composer-php

我仍然无法让作曲家工作。当不使用作曲家自动加载时,我可以require_once类文件并实例化一个对象。但是,当尝试使用自动加载时,我收到此错误:

PHP Fatal error:  Uncaught Error: Class 'MyCompany\User' not found in /var/www/html/portal/login.php:7
Stack trace:
#0 {main}
  thrown in /var/www/html/portal/login.php on line 7

login.php看起来像这样:

<?php
require_once __DIR__ . "/vendor/autoload.php";
use MyCompany\User;

$user = new User();

当前的composer.json如下所示:

{
  "autoload": {
        "psr-4": {
          "MyCompany\\User\\": "vendor/mycompany/user/"
        }
  },
  "require": {
    "mycompany/user": "dev-master"
  },
  "repositories": [
    {
      "packagist.org": false
    },
    {
      "type": "vcs",
      "version": "master",
      "url": "git@mysrc.example.com:/opt/git/phplib/classes/User.git"
    }
  ]
}

User.php文件是这样的:

<?php

namespace mycompany;

class User {

function __construct() {
  print "composer has done something\n";
}

} //end class User

?>

最后,文件夹结构为:

portal\
  composer.json
  login.php
  vendor\
       mycompany\
             \user\User.php
             \pdo\PDO.php
             \page\Page.php

以某种方式命名空间似乎是潜在的问题,但是我不确定如何设置它以支持此结构。最终,即使名称空间是“ mycompany”,也可以,但是在类,composer.json autoload语句和use语句中没有名称空间的组合都可以使用。我在这里浏览了无数问题,但似乎没有一个与这种情况完全相符。这是在Linux系统上,我还尝试了文件和文件夹的大写和小写的各种组合,尽管有些失败,因为作曲家不允许在某些区域使用大写。

0 个答案:

没有答案
相关问题