未找到 Composer 自动加载 类 psr4
Composer autoload not found classes psr4
我尝试使用 composer 加载位于特定文件夹中的自定义 classes。
这是我的项目结构
public
|—index.php
src
|—classes
|— MyClass
|— MyClass.php
vendor
|—autoload.php
composer.json
Index.php
<?php
namespace ink;
require ( vendor/autoload.php );
use ink\src\classes\MyClass\MyClass;
$customclasse = new MyClass();
MyClass.php
<?php
namespace ink\src\classes\MyClass;
class MyClass {
public function __construct(){
}
}
composer.json
{
autoload : {
psr-4 : {
ink\ : src
}
}
}
我做错了什么?
命名空间似乎很好,因为当我需要 MyClass.php 一切正常时,class 已加载。
谢谢
您正在加倍 src
等级。
ink\ : src
你是说 ink
之后的所有内容都在 src
文件夹中。
但是您的 class 在 ink\src\classes\MyClass
命名空间中。
所以这加起来就是 src
+src/classes/MyClass
=src/src/classes/MyClass
路径。
所以您可能需要:
{
autoload : {
psr-4 : {
ink\src\ : src
}
}
}
首先,您似乎没有遵守 PSR-4 规范。
按照规范说:
A fully qualified class name has the following form :
\NamespaceName(\SubNamespaceNames)*\ClassName
文件夹结构
├── composer.json
├── public
│ └── index.php
├── src
│ └── Classes
│ └── Models
│ └── MyClass.php
└── vendor
├── autoload.php
└── composer
├── autoload_classmap.php
├── autoload_namespaces.php
├── autoload_psr4.php
├── autoload_real.php
├── ClassLoader.php
└── LICENSE
index.php
<?php
require '../vendor/autoload.php';
use Ink\Classes\Models\MyClass;
$customclasse = new MyClass();
?>
composer.json
{
"name": "app",
"type": "project",
"description": "app",
"autoload": {
"psr-4": { "Ink\": "src/" }
}
}
MyClass.php
<?php
namespace Ink\Classes\Models;
class MyClass {
public function __construct(){
}
}
我尝试使用 composer 加载位于特定文件夹中的自定义 classes。
这是我的项目结构
public
|—index.php
src
|—classes
|— MyClass
|— MyClass.php
vendor
|—autoload.php
composer.json
Index.php
<?php
namespace ink;
require ( vendor/autoload.php );
use ink\src\classes\MyClass\MyClass;
$customclasse = new MyClass();
MyClass.php
<?php
namespace ink\src\classes\MyClass;
class MyClass {
public function __construct(){
}
}
composer.json
{
autoload : {
psr-4 : {
ink\ : src
}
}
}
我做错了什么? 命名空间似乎很好,因为当我需要 MyClass.php 一切正常时,class 已加载。
谢谢
您正在加倍 src
等级。
ink\ : src
你是说 ink
之后的所有内容都在 src
文件夹中。
但是您的 class 在 ink\src\classes\MyClass
命名空间中。
所以这加起来就是 src
+src/classes/MyClass
=src/src/classes/MyClass
路径。
所以您可能需要:
{
autoload : {
psr-4 : {
ink\src\ : src
}
}
}
首先,您似乎没有遵守 PSR-4 规范。
按照规范说:
A fully qualified class name has the following form :
\NamespaceName(\SubNamespaceNames)*\ClassName
文件夹结构
├── composer.json
├── public
│ └── index.php
├── src
│ └── Classes
│ └── Models
│ └── MyClass.php
└── vendor
├── autoload.php
└── composer
├── autoload_classmap.php
├── autoload_namespaces.php
├── autoload_psr4.php
├── autoload_real.php
├── ClassLoader.php
└── LICENSE
index.php
<?php
require '../vendor/autoload.php';
use Ink\Classes\Models\MyClass;
$customclasse = new MyClass();
?>
composer.json
{
"name": "app",
"type": "project",
"description": "app",
"autoload": {
"psr-4": { "Ink\": "src/" }
}
}
MyClass.php
<?php
namespace Ink\Classes\Models;
class MyClass {
public function __construct(){
}
}