问题标签 [psr-4]

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 投票
1 回答
3464 浏览

php - 如何使用作曲家包含 phpmailer 5.2?

我正在尝试实例化我使用 Composer 安装的 PHP 邮件程序类。该类位于 vendor\phpmailer\phpmailer\class.phpmailer.php

我正在尝试在 SmtpHandler 中加载此类,如下所示:

我的 composer.json 文件正在自动加载我的 php 类,如下所示:

当 $this->mail = new PHPMailer; 被调用,我收到一个错误致命错误:第 8 行的 /var/www/proj/Project/src/SmtpHandler.php 中找不到类 'Fusion\PHPMailer'

我需要使用 vendor\phpmailer\phpmailer\class.phpmailer 吗?还是我使用 psr-4 错了?

谢谢

0 投票
0 回答
165 浏览

php - 作曲家 PSR4 自动加载问题

我正在尝试在我的项目中实现 PSR-4 自动加载。这是我继承的一个现有应用程序,目前不使用 OOP(它都是脚本化的),但我希望随着时间的推移进行重构以使用 OOP,而 PSR-4 对我来说至关重要,因为它最终将成为一个大型项目.

目前我们不依赖任何外部库(完全内部编写的旧应用程序),因此此时 composer 仅用于自动加载,但最终将使用第三方包,例如 phpunit。

我的服务器上的应用程序结构如下所示:

作曲家.json:

当用户成功登录时 login.php 调用 authenticated.php ,并且 authenticated 调用我的 init.php 脚本,其中包含:

是 search.php 有错误。用户通过身份验证后会被重定向到 search.php。

search.php 有以下几行:

OSHelpers.php 命名空间为:namespace Framework\Helpers;

如果使用require_once ,则对 OSHelpers 的静态调用可以正常工作,但是我定义 $current_os 的第二行似乎失败了。

我收到的错误是:

我对它为什么这样做有点茫然?当我按照此视频 ( https://www.youtube.com/watch?v=VGSerlMoIrY ) 中的示例进行操作时,我的示例应用程序运行良好,但尝试以稍微复杂的结构复制它会给我带来问题。

我已经完成了 composer dump-autoload -o,在供应商目录中查看显示我的类定义正确。从供应商/作曲家/autoload_classmap.php:

0 投票
1 回答
85 浏览

php - 作曲家 PSR4 奇怪的行为

不久前,我创建了一个树枝扩展。最近我添加了一个命名空间,以便我可以更轻松地与 composer 一起使用它。我已经这样做了几次,它适用于其他文件/类。

问题是,如果我在作曲家中更新或转储自动加载时使用 -o 选项(优化),它只会正确自动加载。

因此,例如,如果我运行composer dumpautoload -o我的课程,发现没有问题。如果我运行composer dumpautoload它将不起作用并给我以下错误:

我的扩展类:

我的作曲家文件

文件夹结构

有谁知道是什么原因造成的?我似乎无法弄清楚是什么原因造成的。我猜这与我使用优化时创建类图的作曲家有关。

0 投票
1 回答
1057 浏览

php - 如何使用 Lumen 或 Slim 框架实现默认路由行为

我正在考虑将 Lumen 或 Slim 用于项目,并想知道是否可以根据目录结构自动加载控制器,而不必注册所有路由。

这就是我希望自动加载工作的方式。

示例目录/类结构:

如果路线是

example.com/foo/bar==App\Http\Controllers\Foo\BarController::index()

example.com/foo/bar/add== App\Http\Controllers\Foo\BarController::add()

注册的路由应该优先于自动加载的类。

我找到了一种基于 Opencart 路由方法的方法。他们有超过 396 个控制器的 1145 个不同的公共方法,这些方法都被调用而没有明确说明控制器和方法。这是我的尝试。

.htaccess

RewriteRule ^([^?]*) index.php?route=$1 [L,QSA]

应用程序/Http/routes.php

如果需要的路由与 Opencart 的默认路由不同,则使用.htaccess RewriteRule或 aresponse->redirect路由到备用控制器。

我会使用他们的方法,但在 app/Http/routes.php. 像这样

我是否认为这会使应用程序运行得更快,因为它不必搜索所有已注册的路线以进行匹配?

有没有更好的方法来执行这个自动路由过程?

0 投票
1 回答
51 浏览

php - 如何在 Symfony3 中解析自动生成的类

在使用 psr 4 的 Symfony3 项目中,我通过在“var/cache/dev”文件夹中自动生成 php 类来存储配置数据。

这是生成文件的简化副本:

我知道我可以includerequire文件,但“开发”目录在开发和生产之间发生变化,我在几个地方使用该类。另外,我希望在其他项目中使用这个包,所以我不想在包之外硬编码任何东西。这些文件通常是如何加载的?Symfony 核心中有什么可以帮助的吗?

0 投票
0 回答
247 浏览

php - 未找到 psr-4 类

我正在尝试使用 psr-4 设置我的第一个项目,但收到以下错误:

致命错误:未捕获的错误:在 /home/vagrant/Code/testomgeving/index.php:7 中找不到类 'leaseregistratie\Repositories' 堆栈跟踪:

0 {main} 在第 7 行的 /home/vagrant/Code/testomgeving/index.php 中抛出

我的文件夹结构:

索引.php:

开始.php:

用户存储库:

作曲家.json:

我究竟做错了什么?

0 投票
2 回答
606 浏览

php - 找不到类 - PSR-4 命名空间自动加载

我想为我写的一个类设置 PSR-4 自动加载。但是我不断收到错误Fatal error: Class 'Glowdemon1\Translxtor\LangParserXML' not found in C:\xampp\htdocs\translator\index.php on line 5

文件夹结构(还不能发布img):

在此处输入图像描述

语言解析器XML.class.php

索引.php

作曲家.json

autoload_psr4.php

我看了无数帖子,但没有解决方案。如果您想要更深入地了解,这也发布在https://github.com/glowdemon1/translxtor上。谢谢。

0 投票
1 回答
692 浏览

php - 给出 PDO 的实例而不是命名空间名称 - PSR4 使用作曲家自动加载

我正在尝试学习如何使用 PDO。我有一个使用命名空间的非常小的应用程序。我使用作曲家自动加载类。

我正在尝试遵循PHPTheRightWay MVC 方法来处理 PDO,但我失败了。我已经设置了我的 DbModel 类以匹配他们的类,并在我的 php 代码中创建它的一个新实例并解析 PDO 对象。

班级:

页:

但是,我收到以下错误。我不知道为什么会这样。

可捕获的致命错误:传递给 Acme\DbModel::__construct() 的参数 1 必须是 Acme\PDO 的实例,给定的 PDO 实例,在第 9 行的 C:\xampp\htdocs\footballMatch\matchDay.php 中调用并在C:\xampp\htdocs\footballMatch\src\DbModel.php 在第 9 行

添加此类后,我运行composer installcomposer dump-autoload.

0 投票
3 回答
3976 浏览

php - PSR-4:自动加载器(composer)和扩展命名空间确保回退php

我的命名空间回退和在 Composer 中使用 PSR-4 加载程序时遇到问题。

我想做的是:

  1. 有一个可以覆盖/扩展的核心。
  2. 核心基于接口。

目录结构是这样的:

我没有设置这个配置,所以如果你有更好的建议,那就去吧。

我的作曲家 json 对于 psr-4 是这样的:

我认为如果找不到站点,这将使 ACME\App\Site\View 回退到 ACME\App\View (注意我还没有完成界面部分......)。

我的 site/app/View/Example.php 代码如下:

当我也有 site/app/View/View.php 时,哪个有效。看起来像:

site/src/app/View/View.php 如下所示:

这个应该使用接口(我还没试过)。

所以我真正想做的就是做到这一点,这样我就不必拥有site/app/View/View.php,也不必拥有site/app/View/Example.php——它可以使用网站/src/ACME/app/View/Example.php。

对不起,我是命名空间的新手,所以我可能不会很好地表达它。

我得到的是我认为 ACME\App\Site 会回退到 ACME\App - 它没有?还是我做错了?目前它需要所有文件到位。

0 投票
2 回答
1191 浏览

php - 哪个版本的 PSR 有效?

也许我没有完全理解。我读到 PSR 是 PHP 标准推荐,但是 PSR 有几个版本,例如自动加载器使用 PSR-4 而不是基本编码标准使用 PSR-1

我必须遵循特定的 PSR 版本或者我必须合并它们的好部分?

Symfony 遵循 PSR-0、PSR-1、PSR-2 和 PSR-4 文档中定义的标准,那么每个框架使用不同的 PSR?