我已经试着让psr-4自动加载工作一个多星期了,但没有成功。
我的文件结构如下:
-Project
-src
-classes
session.php
-vendor
index.php
我创建了psr-4自动加载功能,如下所示:
"autoload": {
"psr-4": {
"classes\\": "src/classes"
}
}
在使用作曲家转储-自动加载-0后,在我的session.php类中,我给出了命名空间:
namespace classes;
class session{
public static function exist($name){
return(isset($_SESSION[$name])) ? true : false;
}
然后我需要自动加载器,并使用use函数将会话类命名如下:
use src\classes\session as session;
require_once('vendor/autoload.php');
session::put('test', 'test');
打开index.php页面后,我得到一个
致命错误:在第10行的/var/www/test/Project/index.php中找不到类“src\classes\session”
我的目录结构/php正确吗?我在网上尝试了很多不同的指南,但似乎都没能奏效。
最简单的解决方案:
use classes\session;
require_once('vendor/autoload.php');
session::put('test', 'test');
但是,您可能不想使用类
作为供应商命名空间,而是要在这里和那里调整一些东西:
-Project
-src
Session.php
-public
index.php
-vendor
{
"autoload": {
"psr-4": {
"Juakali\\": "src"
}
}
}
将Juakali
替换为您喜欢的供应商命名空间,这只是一个建议。理想情况下,如果您打算发布您的包,它应该是一个尚未被其他人声明的包,请参阅https://packagist.org.
供参考,参见
使用您选择的上述供应商命名空间:
namespace Juakali;
class Session
{
public static function exist($name)
{
return isset($_SESSION[$name]);
}
}
考虑使用广泛使用的编码风格,例如PSR-2。
供参考,参见
假设您希望将index.php
作为web应用程序的入口点公开,将其移动到您有信心公开为web服务器的文档根目录中,调整index.php
中的导入,以及供应商/autoload.php
的路径:
use Juakali\Session;
require_once __DIR__ . '/../vendor/autoload.php';
Session::put('test', 'test');
我和许多其他人一样,似乎很难弄清楚何时以及如何使用自动加载。我想我理解作曲家和PSR-0/PSR-4的概念和这需要的目录结构。但是如果我用自己的MVC框架构建自己的项目 > 由于composer自带了自动加载器,它将加载我希望包含在项目中的所有依赖项,如果我不打算将我的网站变成分布式项目,我甚至需要自己的名称空间吗?为什么我不坚持使用include/requires? 最后,如果我采用名称空间,使
我有一个在本地运行良好的Laravel项目(Mavericks),但是psr-4下的类没有加载到我们的后台服务器(CentOS)上。每次尝试composer更新或运行artisan命令时,我都会收到一个反射“未找到类”错误。 我的所有特定于应用程序的类都存储在我的Laravel项目的app/heatherland下,例如: 我的composer.json包含以下条目: 在本地,psr-4类被添加到
1. 概述 本 PSR 是关于由文件路径 自动载入 对应类的相关规范, 本规范是可互操作的,可以作为任一自动载入规范的补充,其中包括 PSR-0,此外, 本 PSR 还包括自动载入的类对应的文件存放路径规范。 关于「能愿动词」的使用 为了避免歧义,文档大量使用了「能愿动词」,对应的解释如下: 必须 (MUST):绝对,严格遵循,请照做,无条件遵守; 一定不可 (MUST NOT):禁令,严令禁止;
我开始学习Composer,并正在开发一个系统,在该系统中,我将文件与核心应用程序文件分开,如下所示: 所以,要在composer中设置此设置。json文件并访问所有类/App much/Core会这样吗? 还是有更正确的方法? 我也读过PSR-0和PSR-4的比较,我仍然有点怀疑应该使用哪一种。在我的情况下,我应该实现什么,PSR-0还是PSR-4?
我正在用Slim和Twig创建一个web应用程序。我使用的库工作得很好,我可以轻松地调用它们。然而,作曲家并没有找到我自己的类。json自动加载psr-4(psr-0也找不到它们) 这是我的文件系统: 这是我的: 然后: 最后是我的文件: 当我运行时,命令输出: 生成包含0类的自动加载文件 然后以状态代码0退出。应该能找到4个班吧? 运行应用程序显示错误: 致命错误:未捕获错误:类'类\应用程序'
我很难理解这个简单的界面有什么问题。 当我收到下面的通知 弃用通知:./App/Interfaces/renderData.php中的类App\Interfaces\renderData不符合psr-4自动加载标准。它将不再在Composer v2.0中自动加载。 composer.json自动加载部分: 文件夹结构为: 我已经尝试将应用重命名为应用,然后转储自动加载,但问题仍然存在。