问题标签 [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 回答
14748 浏览

php - PHP作曲家自动加载不加载类

我刚刚开始使用 composer 进行依赖管理,我很难弄清楚我是如何不遵守 psr-4 进行自动加载的,所以我在这里寻求建议。我有一个生成随机值的类,该类已经在 packagegist 上。项目结构如下(我已将 composer.json 文件标记为 A 和 B):

项目目录

作曲家.json A

作曲家.json B

最后是 RandomValue.php 文件,它声明了 ejfrancis 命名空间

当我运行该应用程序时,我收到一个错误“找不到类 RandomValue”,因此它没有正确自动加载。我没有遵守 psr-4,还是我做错了什么?我也尝试过仅使用作曲家类图"classmap" : ["RandomValue.php"]进行自动加载,但没有成功。谢谢您的帮助

更新:我在 composer.json B 文件上运行了“composer validate”,它肯定是有效的

0 投票
1 回答
570 浏览

composer-php - autoload psr-4 在安装过程中丢失

这是我的包的 composer.json(缩短)

在我的项目中:

然后我运行composer install导致一个 installed.json 像

和一个自动加载-psr4.php:

自动加载消失了,还有其他键require

我错过了什么?

我也试过psr-0,但没有成功。autoload_namespaces.php 只是一个空数组。

0 投票
2 回答
13184 浏览

php - PSR-4 自动加载不工作

我创建了一个app/modules目录并使用 PSR-4 自动加载它,如下所示:

我也做到了composer dumpautoload。我有以下目录结构:

该文件BackendController.php具有命名空间Modules\ModuleName\Controllers

在 中routes.php,我有以下内容:

但是每当我尝试访问“后端/模块/模块名称”时,我都会收到ReflectionException以下消息:

什么可能导致问题?当我在本地机器上运行它时,它似乎可以工作,但我无法让它在网络服务器上工作。是否有任何可能导致此问题的服务器配置方案?

由于我没有对该网络服务器的 shell 访问权限,因此我没有在网络服务器上安装 composer,但它安装在我的本地计算机上。我已将包括vendor目录在内的所有文件上传到服务器。

0 投票
5 回答
71855 浏览

php - PSR-0 和 PSR-4 有什么区别?

最近我读到了命名空间以及它们如何有益。我目前正在 Laravel 中创建一个项目,并尝试从类映射自动加载转移到命名空间。但是,我似乎无法掌握 PSR-0 和 PSR-4 之间的实际区别。

我读过的一些资源是......

我的理解:

  • PSR-4 不会将下划线转换为目录分隔符
  • composer 的某些特定规则导致目录结构变得复杂,这反过来又使 PSR-0 命名空间变得冗长,因此创建了 PSR-4

解释差异的示例将不胜感激。

0 投票
1 回答
3760 浏览

php - Composer 自动加载 psr-4 未将命名空间添加到 autoload_psr4.php

我在一个项目中使用 github 中的自定义存储库,其中包含我的一组工具。

该项目在 /vendor 目录中正确导入包,但我不能使用任何类,因为它没有自动加载包的内容。

我的包 composer.json 文件如下所示:

}

相反,在项目内部,composer.json 文件如下所示:

完成作曲家更新后的最终 autoload_psr4.php,作曲家转储如下所示:没有“Mynamespace”的痕迹

有什么帮助吗?

0 投票
1 回答
663 浏览

php - 项目与 Composer PSR-4 的自定义自动加载器

我目前正在开发一个具有以下目录结构的小型框架:

目前我在框架的 composer.json 中有两个 PSR-4 实例:

这样做的目的是,位于的实际项目app可以使用框架中\FrameworkName\foo\bar\Class的类 using ,也可以使用它自己的类 using \foo\bar\Class。唯一的限制是供应商目录和应用程序目录之间的相对深度。

最好的方法是什么?只需包含第二个自动加载器或强制执行此目录结构并让 Composer 负责生成自动加载器?

0 投票
2 回答
23143 浏览

laravel - Laravel psr-4 不自动加载

我有一个在本地运行良好的 Laravel 项目(Mavericks),但是 psr-4 下的类没有加载到我们的舞台服务器(CentOS)上。每次我尝试作曲家更新或运行工匠命令时,都会收到反射“找不到类”错误。

我所有特定于应用程序的类都存储在我的 Laravel 项目中 app/heatherland 下,例如:

我的 composer.json 包含这个条目:

在本地,psr-4 类被添加到 vendor/composer/autoload_classmap.php 中的数组中。它们不会添加到舞台服务器上的此文件中。如果我手动剪切和粘贴它们,artisan 命令可以正常工作,但是下次我运行 composer 命令时,自动加载文件会被覆盖。本地和舞台上的 autoload_psr4.php 都有以下条目,对我来说看起来不错:

这是我尝试/检查过的东西的列表:

  • 类名、文件夹名、文件名大小写一致且正确。
  • 我一直在自由地使用 composer dump-autoload,有和没有 -o 选项
  • 我可以使用 --no-scripts 选项很好地运行 composer update,但 artisan 仍然无法运行
  • 文件夹名称是小写的,我尝试更改它们以反映命名空间的大小写(编辑:这从未发生过,至少没有成功)。
  • 我已经尝试从我的命名空间中删除 CamelCase(例如,将其更改为 Heatherland),并且我的任何文件夹/文件名中都没有任何下划线。
  • 我正在运行 PHP 5.4.30,并且 composer 是最新的。我的本地设置和舞台服务器上的版本相同。Laravel 4.1.30。
  • 两个系统中都没有重复的 composer.phar

欢迎任何新的建议。在这一点上,如果我做了一些愚蠢的事情,我会很高兴。

0 投票
2 回答
1253 浏览

php - Laravel composer dump-autoload 未应用新的 PSR-4 结构

当我composer dump-autoload. 这是我的作曲家,条目是 src/Booksmart :

这是我的目录结构:

Advance.php 看起来像这样:

Myvendor/composer/autoload_psr4.php没有显示我的 Booksmart 命名空间的新条目,并且绝对没有加载 Advance.php 类。这似乎很容易搞砸,我错过了什么?

0 投票
1 回答
1662 浏览

php - 为什么 Composer 不加载 PSR-4 自动加载?

我正在尝试使用作曲家 vimeo 包“vimeo/vimeo-api”:“dev-master”。

在作曲家自己的 ClassLoader.php 中,事情变得丑陋,在下面的函数中,它达到了:if (0 === strpos($class, $prefix))并跳出循环,因为此时$class = 'Vimeo'结果$prefix = 'Vimeo/'为假。

vimeo 包中的 composer.json 文件声明了 'Vimeo\' 的 psr-4 自动加载,如下所示:

作曲家创建的 autoload_psr4.php 如下:

所以当我来实例化类'new Vimeo('arg','arg');' 我收到一个找不到类的错误。

这可能与我在 Zendframework (1.12.8) 中运行的事实有关,还是作曲家搞砸了或其他什么?

0 投票
3 回答
548 浏览

php - Laravel、命名空间和 PSR-4

我正在尝试在新的 Laravel 4 应用程序中设置 PSR-4,但是在构建控制器时遇到了一些麻烦。

这是我现在拥有的:

我不太喜欢用\View, \Config,\Whatever来使用 Laravel 的类。所以我想知道我是否可以放 ause Illuminate\View;以便在不放 a 的View::make情况下使用\

不幸的是,在执行此操作时,我收到以下错误:Class 'Illuminate\View' not found

有人可以帮忙吗?