似乎composer在运行post install命令时无法加载psr-4类。
这是我的composer.json:
{
"autoload": {
"psr-4": {
"Modules\\": "modules/",
"ComposerScript\\": ""
}
},
"scripts": {
"post-install-cmd": [
"ComposerScript\\ComposerScript::postInstall"
]
}
}
ComposerScript.php
包含:
<?php
namespace ComposerScript;
use Modules\Common\Services\RouterService;
use Composer\Script\Event as ComposerEvent;
class ComposerScript
{
public static function postInstall(ComposerEvent $event)
{
$vendorDir = $event->getComposer()->getConfig()->get('vendor-dir');
require $vendorDir . '/autoload.php';
echo 'class exist: ';
var_dump(class_exists('Modules\Common\Services\RouterService'));
$router = new \Modules\Common\Services\RouterService();
}
}
运行composer安装后
输出:
生成自动加载文件Composer脚本\Composer脚本::postInstall
类存在:bool(false)
PHP致命错误:在第19行的 /var/www/project/ComposerScript.php中找不到类模块\公共\服务\路由器服务
从apache运行项目时,autoloader可以正常工作。在本地也可以。可能是一些服务器配置,但哪一个。。。。
感谢您的帮助或推荐。
问题是PSR-4自动加载:
http://www.php-fig.org/psr/psr-4/
文件夹应使用第一个字母大写,如类名:
{
"autoload": {
"psr-4": {
"Modules\\": "Modules/",
"ComposerScript\\": ""
}
}
}
$router = new \Modules\Common\Services\RouterService();
应该匹配:
-Modules
-Common
-Services
-RouterService.php
这篇文章是对 PHP自动加载功能 的一个总结,内容涉及 PHP自动加载功能 、PHP命名空间、PSR0/PSR4标准 等内容。 一、PHP 自动加载功能 PHP 自动加载功能的由来 在 PHP 开发过程中,如果希望从外部引入一个 Class ,通常会使用 include 和 require 方法,去把定义这个 Class 的文件包含进来。这个在小规模开发的时候,没什么大问题。但在大型的开发项目中,
我们如何以编程的方式安装 Composer? 如下载页面所指出的,这个安装程序包含一个签名,当安装程序代码发生改变时,它会随之发生改变,因此不应该长期依赖。 还有另一种方法,就是使用只对 UNIX 实用程序工作的脚本: #!/bin/sh EXPECTED_SIGNATURE="$(wget -q -O - https://composer.github.io/installer.sig)" p
我运行的是$react-native run-android。它工作正常,我也能看到android模拟器的变化。我已经创建了3个组件,并在android设备上测试了它。 但是现在,突然,它问我不能从资产“index.android.bundle”加载脚本,我已经恢复了更改并开始,但我仍然看到这个错误。 在互联网上撒娇后,我表演了,1。npm 开始 2.反应原生启动 3.亚行终止服务器和亚行启动服务
我有自己的小MVC框架,我使用composer psr-4自动加载。 在我自己的计算机上,它工作得非常好,但当我将它部署到我的Ubuntu服务器上时,它就不再工作了。(它再也找不到任何类了)我已经尝试了很多东西,但无论我尝试什么,它都不起作用。。。 我所尝试过的: 作曲家转储自动加载 作曲家更新 删除所有内容并再次上载 在互联网上搜索几个小时…:( 这是我的composer.json: 我只是不明
1.4* 自动加载脚本机制 前文已提及,vim 脚本主要用 :source 命令加载,然而很多情况下又不需要手动执行 该命令。只要将脚本放在特定的目录下,vim 就有个机制自动搜寻并加载的机制。 Vim 插件搜索目录 首先要知道有 &runtimepath (常简写为 &rtp)这个选项。它与系统的环境变量 $PATH 有点类似,就是一组有序的目录名称,用于 Vim 在许多不同情况下搜寻 *.vi
问题内容: 我刚刚通过Composer安装了Sebastian Bergmann的PHPUnit版本3.7.19,并编写了一个我想进行单元测试的类。 我想将所有类都自动加载到每个单元测试中, 而 不必使用它或将其放在测试的顶部,但这证明很困难! 这是我的目录结构的样子(后跟/斜杠表示目录,而不是文件): composer.json composer.lock composer.phar lib /