当前位置: 首页 > 知识库问答 >
问题:

在没有任何框架的情况下理解PSR-4编写器

李睿
2023-03-14

我试图理解和学习它是如何工作的PSR-4,因为我喜欢用这个标准,一个小应用程序进行重构。

根据几本手册,以及关于堆栈溢出的帖子,我的结构和文件都还可以。

/vendor
  /abkrim
     /rclub
        /src/
            ResellerApi.php

ResellerApi.php内容:

<?php

namespace Abkrim\Rclub;
// Also try namespace Abkrim\Rclub\ResellerApi;

class ResellerApi
{
   private $url;
   private $proxy;
   private $auth_userid;
   private $api_key;

  function __construct() {
      $this->url          = 'https://test.XXXXXX.com/api/domains/';
      $this->proxy        = '94.xxx.xxx.xxx:1111';
      $this->$auth_userid = '837465';
      $this->$api_key     = 'VU5EksjwGa28mA93tgviQd7eWgiSQLOz';
   }
   public function show() {
       //composer-autoload
   }
}

关于我的作曲家。json(全局)

{
  "name": "abkrim/resellerclub",
  "description": "Una pequeña app para modificar los contactos .ES",
  "license": "MIT",
  "authors": [
    {
      "name": "Abdelkarim Mateos",
      "email": "abdelkarim@tamainut.com"
    }
  ],
  "autoload": {
    "psr-4": {
      "Abkrim\\Rclub": "vendor/abkrim/rclub/" //Final edition Work Fine 
      //"Abkrim\\Rclub": "src/"
    }
  }
}

在我的工作目录/reseller.php

<?php

use Abkrim\Rclub\ResellerApi;

require_once __DIR__.'/vendor/autoload.php';  // That it's he question. If not put autoload, not work.

// Also try below with up comment
//  use Abkrim\Rclub;

$con = new ResellerApi();
$con->show();

PHPstorm不显示错误。

但是php显示错误...

PHP Fatal error:  Class 'Abkrim\Rclub\ResellerApi' not found in /Volumes/iDatos/abkrim/ownCloudTDC/tamainut/desarrollo/resellerclub/reseller/reseller.php on line 7

编辑:在文件vendor/composer/autoload_psr4上运行composer dump autoload(或composer update)后。php

php prettyprint-override"><?php

// autoload_psr4.php @generated by Composer

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

return array(
    'Abkrim\\Rclub' => array($baseDir . '/src'),
);

有太多的手册展示了示例,但它是一个混合了Laravel、Sympony。。。我喜欢理解PSR-4。。。

共有1个答案

秦承允
2023-03-14

问题是你的文件不在你告诉自动加载器要查找的地方。您的文件位于/供应商/abkrim/rClub/src/ResellerApi.php中,并且您已经告诉自动加载器,名称空间Abkrim\RClub位于供应商/abkrim/rClub/中,因此通过指定Abkrim\RClub\ResellerApi,您将告诉自动加载程序ResellerApi在/供应商/abkrim/rClub/ResellerApi.php中,看到问题了吗?你错过了src文件夹。

试着换一下你的作曲家。json文件到:

"autoload": {
    "psr-4": {
        "Abkrim\\Rclub": "vendor/abkrim/rclub/src/"
    }   
}

完成更改后,请确保运行composer dump autoload以更新autoloader。

或者,您可以更新您的ResellerApi.phpreseller.php文件以使用Abkrim\RClub\src

 类似资料:
  • 问题内容: 我刚刚开始使用Python,我想知道如何在不需要框架的情况下对Web应用程序进行编程。我是一位经验丰富的PHP开发人员,但是我有尝试Python的冲动,而且我通常喜欢从头开始编写,而没有受到flask和django等框架的限制。 问题答案: WSGI是Web服务器接口的Python标准。如果要创建自己的框架或在没有框架的情况下运行,则应进行研究。特别是,我发现Ian Bicking的D

  • 我正在尝试在没有项目编写器的情况下使用下面的配置来配置spring批处理步骤。然而,我错误地说writer元素既没有'writer'属性,也没有元素。 我浏览了链接spring批处理:没有ItemWriter的Tasklet。但无法解决问题。有人能告诉我在我提到的代码片段中要做的具体更改吗

  • 我正在使用实体框架映射一些表,但除非我声明一些列作为主键,否则我无法这样做。 这里的问题是,数据库中的表没有主键,并且有数百万行。我没有创建新Id列的权限。 Obs:如果我将属性添加到诸如

  • 问题内容: 我知道Go将来不会有泛型,并且有一些建议可以用其他结构代替它们。但是在下面的例子中,我陷入了困境。 您可能会猜到,我试图使任何错误均告失败,并且希望将任何返回两个结果的函数放到第二个错误中。这工作正常,但丢失了它的类型信息,并且结果中只是一个空接口。 由于我也正在调用lib函数,因此我看不到使用Interfaces或Reflection解决此问题的方法。 有任何想法吗?我是完全走错了道

  • < sub >(我已经知道了答案,但是因为我经常发现自己在重新寻找答案,所以我把它贴在这里作为自己和他人的文档。这是Stackoverflow上鼓励的。) 许多 Servlet 开发人员都读过《Head First Serlet》一书 在Servlet 2.4及更低版本中,web.xml用于完全配置Web应用程序。但是更高版本似乎有其他方法来配置Web应用程序,无需触及web.xml和注释。例如,

  • 问题内容: 我想要以下内容。 我只需要一个可以从Maven存储库下载jar及其依赖项的实用程序,而对我的项目的构建方式没有任何限制。 我想要这样的东西: 它也应该能够下载依赖项。 更新: 我不知道应该构造pom.xml。 我唯一需要完成的任务是下载jar,我希望有一个工具可以完成此任务,而不会让我烦恼过多的信息。 有那样的东西吗? 问题答案: 如果要将maven依赖项下载到lib目录中,请使用带有