问题标签 [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.
php - php psr自动加载歧义
我正在开发一个 php sdk 重写项目,客户希望完成 PSR 标准。我在这里查看标准页面
https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
我无法理解的一件事是,如果我在课堂上使用名称空间,我是否仍然需要使用 include、require 或 use。我的意思是自动加载的全部原因胜过目的,对吗?
例如,假设我以这种方式上课,
我有另一个类通过扩展它来使用这个类,
考虑到我在上面的链接上有一个自动加载功能,上述代码是否符合 psr-0 标准。
php - 为什么不使用命名空间来自动加载不好的做法?
我已经看到一堆使用 PSR 进行命名空间自动加载的示例。也许这是一个愚蠢的问题,但为什么这不是不好的做法?这不会违背拥有命名空间的目的吗?
例如,假设您有两个库,FormBuilder
并且MySweetForms
, 并且都有一个Form
类。地点在:
lib/FormBuilder/Core/Form.php
和lib/MySweetForms/Form.php
如果您根据这些Form
类所在的命名空间自动加载,您是否会遇到命名空间旨在防止的确切问题:类和方法的模棱两可的标识符?
当您在命名空间中成功找到另一个类时,它不会失败MySweetForms
,例如AjaxFileField
,它依赖于\MySweetForms\Form
,但它找到FormBuilder
了该类的实现Form
?
php - PSR-0 自动加载器:命名空间和目录结构
PSR-0 自动加载器约定是否需要使用映射到目录结构的命名空间?
php - 具有不同(较短)目录结构的 Composer 自动加载
我希望 Composer 加载我的 PHP 类。根据命名空间,当我遵循目录结构时它可以工作。
例如,我的类\MyCompany\MyProject\Class1
在位于src/MyCompany/MyProject/Class1.php
. 我使用这个作曲家设置:
但是,我不想将所有文件都放到 MyCompany 目录中,因为它是 src 中唯一的一个。我知道 Java 会这样做,但仍然如此。有什么方法可以设置 Composer,以便当我的类直接在 src 中时它会加载它们?例如从文件src/Class1.php
.
编辑:PSR-4 直接解决了这个问题,尽管类映射仍然有效(建议用于生产设置)。
namespaces - 使用 composer 将命名空间加载为 psr-0 库
我在任何 Web 应用程序项目中都使用 Silex(以及 Composer)。
我想自动加载 4 个实体和表单:
- FSB\MyProject\Entity\Booking --> /src/FSB/MyProject/Entity/Booking.php
- FSB\MyProject\Form\BookingType --> /src/FSB/MyProject/Form/BookingType.php
- FSB\MyProject\Entity\Contact --> /src/FSB/MyProject/Entity/Contact.php
- 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'”
我尝试了很多方法来加载我的实体,例如:
甚至:
--> 在我的开发环境中有几种方法;我的生产环境中没有...
我错过了什么 ?
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”文件。
谢谢你的帮助 :)
php - 作曲家自动加载器 psr-0 命名空间
我已经创建了一个自定义作曲家包,但我无法为其设置正确的自动加载选项。
我所有的课程都在MyNamespace/Common
命名空间下。例如,为了包括我的ArrayHelper
课程,我确实使用Mynamespace/Common/Helper/ArrayHelper
.
这是我的相关部分composer.json
:
我读过这个:composer.json / autoload
有什么帮助吗?
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 种子?我很想有一些东西可以参考。
这是我的配置设置:
php - 使用 Composer 问题自动加载 GitHub 存储库
我有PHP Fatal error: Class 'sendwithus\sendwithus_php\lib\API' not found
作曲家.json:
测试.php:
我究竟做错了什么?
php - PSR-0 自动加载错误
我想为我的项目使用作曲家。
我的项目结构:
命名空间
作曲家.json
哪里出错了?谢谢...