使用 psr-4 自动加载文件时的问题
issues when autoloading files with psr-4
我已经尝试让 psr-4 自动加载工作一个多星期了,但没有成功。
我的文件结构如下:
-Project
-src
-classes
session.php
-vendor
index.php
我创建了 psr-4 自动加载函数如下:
"autoload": {
"psr-4": {
"classes\": "src/classes"
}
}
在使用 composer dump-autoload -0 之后,在我的 session.php class 中我给了命名空间:
namespace classes;
class session{
public static function exist($name){
return(isset($_SESSION[$name])) ? true : false;
}
然后我需要自动加载器并使用 use 函数命名会话 class 如下:
use src\classes\session as session;
require_once('vendor/autoload.php');
session::put('test', 'test');
打开 index.php 页面后,我得到一个
Fatal error: Class 'src\classes\session' not found in /var/www/test/Project/index.php on line 10
我的目录结构/php正确吗?我在网上尝试了很多不同的指南,但似乎无法正常工作。
最简单的解决方案:
use classes\session;
require_once('vendor/autoload.php');
session::put('test', 'test');
无关
但是,您可能不想使用 classes
作为供应商名称空间,而是在这里和那里调整一些东西:
目录结构
-Project
-src
Session.php
-public
index.php
-vendor
正在 composer.json
中自动加载配置
{
"autoload": {
"psr-4": {
"Juakali\": "src"
}
}
}
将 Juakali
替换为您喜欢的供应商名称空间,这只是一个建议。理想情况下,如果您打算发布您的包,它应该是尚未被其他人认领的包,请参阅 https://packagist.org。
有关参考,请参阅
Juakali\Session
使用您选择的上述供应商命名空间:
namespace Juakali;
class Session
{
public static function exist($name)
{
return isset($_SESSION[$name]);
}
}
考虑使用广泛使用的编码风格,例如 PSR-2。
参考
index.php
假设您想要公开 index.php
作为 Web 应用程序的入口点,将其移动到您有信心公开为 Web 服务器的文档根目录的目录中,调整导入 index.php
,以及 vendor/autoload.php
:
的路径
use Juakali\Session;
require_once __DIR__ . '/../vendor/autoload.php';
Session::put('test', 'test');
您似乎将 "src/classes" 的别名定义为 'classes'。
所以你需要使用:
use classes\session;
改为
更多信息:
我已经尝试让 psr-4 自动加载工作一个多星期了,但没有成功。
我的文件结构如下:
-Project
-src
-classes
session.php
-vendor
index.php
我创建了 psr-4 自动加载函数如下:
"autoload": {
"psr-4": {
"classes\": "src/classes"
}
}
在使用 composer dump-autoload -0 之后,在我的 session.php class 中我给了命名空间:
namespace classes;
class session{
public static function exist($name){
return(isset($_SESSION[$name])) ? true : false;
}
然后我需要自动加载器并使用 use 函数命名会话 class 如下:
use src\classes\session as session;
require_once('vendor/autoload.php');
session::put('test', 'test');
打开 index.php 页面后,我得到一个
Fatal error: Class 'src\classes\session' not found in /var/www/test/Project/index.php on line 10
我的目录结构/php正确吗?我在网上尝试了很多不同的指南,但似乎无法正常工作。
最简单的解决方案:
use classes\session;
require_once('vendor/autoload.php');
session::put('test', 'test');
无关
但是,您可能不想使用 classes
作为供应商名称空间,而是在这里和那里调整一些东西:
目录结构
-Project
-src
Session.php
-public
index.php
-vendor
正在 composer.json
中自动加载配置
{
"autoload": {
"psr-4": {
"Juakali\": "src"
}
}
}
将 Juakali
替换为您喜欢的供应商名称空间,这只是一个建议。理想情况下,如果您打算发布您的包,它应该是尚未被其他人认领的包,请参阅 https://packagist.org。
有关参考,请参阅
Juakali\Session
使用您选择的上述供应商命名空间:
namespace Juakali;
class Session
{
public static function exist($name)
{
return isset($_SESSION[$name]);
}
}
考虑使用广泛使用的编码风格,例如 PSR-2。
参考
index.php
假设您想要公开 index.php
作为 Web 应用程序的入口点,将其移动到您有信心公开为 Web 服务器的文档根目录的目录中,调整导入 index.php
,以及 vendor/autoload.php
:
use Juakali\Session;
require_once __DIR__ . '/../vendor/autoload.php';
Session::put('test', 'test');
您似乎将 "src/classes" 的别名定义为 'classes'。 所以你需要使用:
use classes\session;
改为
更多信息: