问题标签 [psr-0]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
189 浏览

php - php psr自动加载歧义

我正在开发一个 php sdk 重写项目,客户希望完成 PSR 标准。我在这里查看标准页面

https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md

我无法理解的一件事是,如果我在课堂上使用名称空间,我是否仍然需要使用 include、require 或 use。我的意思是自动加载的全部原因胜过目的,对吗?

例如,假设我以这种方式上课,

我有另一个类通过扩展它来使用这个类,

考虑到我在上面的链接上有一个自动加载功能,上述代码是否符合 psr-0 标准。

0 投票
1 回答
304 浏览

php - 为什么不使用命名空间来自动加载不好的做法?

我已经看到一堆使用 PSR 进行命名空间自动加载的示例。也许这是一个愚蠢的问题,但为什么这不是不好的做法?这不会违背拥有命名空间的目的吗?

例如,假设您有两个库,FormBuilder并且MySweetForms, 并且都有一个Form类。地点在:

lib/FormBuilder/Core/Form.phplib/MySweetForms/Form.php

如果您根据这些Form类所在的命名空间自动加载,您是否会遇到命名空间旨在防止的确切问题:类和方法的模棱两可的标识符?

当您在命名空间中成功找到另一个类时,它不会失败MySweetForms,例如AjaxFileField,它依赖于\MySweetForms\Form,但它找到FormBuilder了该类的实现Form

0 投票
1 回答
720 浏览

php - PSR-0 自动加载器:命名空间和目录结构

PSR-0 自动加载器约定是否需要使用映射到目录结构的命名空间?

0 投票
2 回答
374 浏览

php - 具有不同(较短)目录结构的 Composer 自动加载

我希望 Composer 加载我的 PHP 类。根据命名空间,当我遵循目录结构时它可以工作。

例如,我的类\MyCompany\MyProject\Class1在位于src/MyCompany/MyProject/Class1.php. 我使用这个作曲家设置:

但是,我不想将所有文件都放到 MyCompany 目录中,因为它是 src 中唯一的一个。我知道 Java 会这样做,但仍然如此。有什么方法可以设置 Composer,以便当我的类直接在 src 中时它会加载它们?例如从文件src/Class1.php.

编辑:PSR-4 直接解决了这个问题,尽管类映射仍然有效(建议用于生产设置)。

0 投票
2 回答
2636 浏览

namespaces - 使用 composer 将命名空间加载为 psr-0 库

我在任何 Web 应用程序项目中都使用 Silex(以及 Composer)。

我想自动加载 4 个实体和表单:

  1. FSB\MyProject\Entity\Booking --> /src/FSB/MyProject/Entity/Booking.php
  2. FSB\MyProject\Form\BookingType --> /src/FSB/MyProject/Form/BookingType.php
  3. FSB\MyProject\Entity\Contact --> /src/FSB/MyProject/Entity/Contact.php
  4. FSB\MyProject\Form\ContactType --> /src/FSB/MyProject/Form/ContactType.php

composer.json 使用 psr-0 数组定义:

然后在我的 index.php 文件中,我只是调用:

在我的开发环境、MAMP、php 5.4 中一切正常

但它在我的生产服务器上也中断了,Ubuntu 上的 Apache2 和 PHP 5.4

“PHP 致命错误:在 /[...]/index.php 中找不到类 'FSB\MyProject\Entity\Contact'”

我尝试了很多方法来加载我的实体,例如:

甚至:

--> 在我的开发环境中有几种方法;我的生产环境中没有...

我错过了什么 ?

0 投票
3 回答
3524 浏览

php - Composer 不生成自动加载器信息 (autoload_namespaces.php)

我无法通过作曲家正确安装项目。我有一个自己的自定义包(库)托管在一个非公共 git repo(但集中)中,由 composer 获取(包含 composer.json 的虚拟项目,仅用于测试我的包)。

所以结构是这样的:



composer.json 的内容:


因此,当我在上面看到的包含测试项目和 composer.json 的文件夹中运行 composer install “php composer.phar install” - 一切似乎都很好 - 但是 - 缺少自动加载器信息 - 地图(数组)在“autoload_namespaces.php”(生成的文件)中保持为空。

我假设当我用 composer 安装一个包并且包(在我的情况下是包 foo/bar)包含一个 composer.json 文件 - 这个文件也在安装过程中执行/处理,并且自动加载的信息取自这个(包) composer.json 文件。我对吗?还是我做错了什么?


以下是 foo/bar 包中的“composer.json”文件的内容:


由于上面的配置,我想要这样的自动加载信息:

如果我手动插入这一行“'Foo' => ...”,一切正常。但我无法弄清楚为什么作曲家没有将这些信息写入“autoload_namespaces.php”文件。

谢谢你的帮助 :)

0 投票
1 回答
23886 浏览

php - 作曲家自动加载器 psr-0 命名空间

我已经创建了一个自定义作曲家包,但我无法为其设置正确的自动加载选项。

我所有的课程都在MyNamespace/Common命名空间下。例如,为了包括我的ArrayHelper课程,我确实使用Mynamespace/Common/Helper/ArrayHelper.

这是我的相关部分composer.json

我读过这个:composer.json / autoload

有什么帮助吗?

0 投票
1 回答
6551 浏览

laravel - Laravel 4无法从命名空间控制器中找到BaseController

我正在尝试构建我的 Laravel 4 站点,以便 (1) 主要应用程序组的组件(控制器/视图/等)耦合在一起,以及 (2) Laravel 在我的 Web 服务器文档根目录之外的支持代码。默认的 laravel 主页加载正常,但我无法让命名空间控制器正确路由。这是相关的文件结构:

默认的 laravel 登陆页面加载正常。但是当我尝试使用自己的命名空间设置控制器时,我不断收到错误消息。

这是HomeController.php

这是routes.php

此设置会产生错误:“Symfony \ Component \ Debug \ Exception \ FatalErrorException Class 'PageTypes\BaseController' not found” 好的,laravel 至少找到了 HomeController.php。

许多其他 SO 响应告诉我尝试将 BaseController 更改为 \BaseController。进行这一更改并保持其他所有内容相同会产生错误“ReflectionException:Class PageTypes\Home\controllers\HomeController 不存在”。什么?... >.<

我不了解命名空间、psr-0 和 laravel 路由的交叉点,任何帮助将不胜感激。

后续问题:(1)我可以采取哪些步骤来调试这个?除了我在抛出的异常错误中看到的内容之外,NGINX 的日志并没有真正告诉我任何其他信息。(2) 有没有人在 github 上遇到过类似布局的 laravel 种子?我很想有一些东西可以参考。

这是我的配置设置:

0 投票
2 回答
4549 浏览

php - 使用 Composer 问题自动加载 GitHub 存储库

我有PHP Fatal error: Class 'sendwithus\sendwithus_php\lib\API' not found

作曲家.json:

测试.php:

我究竟做错了什么?

0 投票
1 回答
96 浏览

php - PSR-0 自动加载错误

我想为我的项目使用作曲家。

我的项目结构:

命名空间

作曲家.json

哪里出错了?谢谢...