【问题标题】:Problem to set up Composer / autoloading my classes设置 Composer / 自动加载我的类的问题
【发布时间】:2019-10-11 03:37:17
【问题描述】:

我正在学习 Composer 的工作原理(开发人员的新手^^)但我正在努力修复我的自动加载...

这是我的 composer.json :

      "autoload": {
        "psr-4": {
            "OCFram\\": "/../lib/",
            "App\\": "/../",
            "Model\\": "/../lib/vendors/",
            "Entity\\": "/../lib/vendors/",
            "FormBuilder\\": "/../lib/vendors/",
            "Slug\\": "/../lib/vendors/"
        }
      },

例如:

致命错误:未捕获的错误:类 'App\Frontend\FrontendApplication' 没找到

嗯,FrontendApplication 路径(来自 composer.json):**

../App/Frontend/FrontendApplication.php

这是带有命名空间的 FrontendApplication.php:

 <?php
 namespace App\Frontend;

 use \OCFram\Application;

 class FrontendApplication extends Application
 {
   public function __construct()
   {
      parent::__construct();

      $this->name = 'Frontend';
   } 

   public function run()
   {
      $controller = $this->getController();
      $controller->execute();

      $this->httpResponse->setPage($controller->page());
      $this->httpResponse->send();
   }
 }

另外,我注意到供应商/作曲家上的这个文件(autoload_psr4.php):

 <?php

// autoload_psr4.php @generated by Composer

 $vendorDir = dirname(dirname(__FILE__));
 $baseDir = dirname($vendorDir);

 return array(
     'Slug\\' => array('/lib/vendors'),
     'OCFram\\' => array('/lib'),
     'Model\\' => array('/lib/vendors'),
     'FormBuilder\\' => array('/lib/vendors'),
     'Entity\\' => array('/lib/vendors'),
     'App\\' => array('/'),
    );

希望能得到一些帮助:)

[编辑]

所以我改变了路径 "App\": "/../" (这是没有意义的) 到 : "应用\": "../",

现在在另一个作曲家转储自动加载之后我得到了这个:

                 <?php

                 // autoload_psr4.php @generated by Composer

                 $vendorDir = dirname(dirname(__FILE__));
                 $baseDir = dirname($vendorDir);

                return array(
                'Slug\\' => array($baseDir . '/../lib/vendors'),
                'OCFram\\' => array($baseDir . '/../lib'),
                'Model\\' => array($baseDir . '/../lib/vendors'),
                'FormBuilder\\' => array($baseDir . '/../lib/vendors'),
                'Entity\\' => array($baseDir . '/../lib/vendors'),
                'App\\' => array($baseDir . '/..'),
                );

但是当我尝试使用 php index.php 时仍然存在同样的问题: 致命错误:未捕获错误:类 'App\Frontend\FrontendApplication' 未找到

【问题讨论】:

  • 更新:删除 / .. 不知道为什么我把它,但仍然是一个问题:“App\\”:“../”所以 autoload_psr4 现在显示:'App\\' =>数组($baseDir .'/..')
  • 你试过在composer.json更改后运行composer dump-autoload吗?
  • 是的,刚刚编辑了我的帖子,谢谢^^ 我遇到了同样的问题

标签: php composer-php


【解决方案1】:

截至您的声明:

嗯,FrontendApplication 路径(来自 composer.json):**

../App/Frontend/FrontendApplication.php

您的文件夹结构似乎是:

/App
/<some-dir>/composer.json

您似乎只是在路径中错过了App,您不需要前导或尾随斜杠。

     "autoload": {
        "psr-4": {
            "OCFram\\": "../lib",
            "App\\": "../App",
            "Model\\": "../lib/vendors",
            "Entity\\": "../lib/vendors",
            "FormBuilder\\": "../lib/vendors",
            "Slug\\": "../lib/vendors"
        }
      },

【讨论】:

  • 是的!抱歉,我只是错过了添加文件夹的名称...已修复.. ^^
猜你喜欢
  • 2020-06-17
  • 1970-01-01
  • 2018-07-11
  • 1970-01-01
  • 2018-07-25
  • 1970-01-01
  • 2014-03-24
  • 1970-01-01
  • 2016-04-17
相关资源
最近更新 更多