[英]PHP: Autoloading via PSR-4 is saying class not found
我試圖在我的 src 文件夾DependencyContainer
中使用 class ,但它說 class 找不到?
指數:
<?php
$dc = new \Mango\DependencyContainer();
文件結構:
src/
DependencyContainer.php
index.php
composer.json
作曲家.json:
{
"name": "mqwerty/ioc-container",
"type": "library",
"require": {},
"autoload": {
"psr-4": {
"Mango\\": "src/"
}
}
}
依賴容器 class:
<?php
declare(strict_types = 1);
namespace Mango;
class DependencyContainer
{
}
首先,您需要像這樣在索引中添加自動加載文件
require __DIR__ . '/vendor/autoload.php';
而你的index.php
會像這樣
<?php
require __DIR__ . '/vendor/autoload.php';
$dc = new \Mango\DependencyContainer();
它會解決你的問題
自動加載不只是自動發生; composer 設置為根據composer.json
的 PSR 設置來管理 PSR 自動加載的創建和更新。
在 CLI 中composer install
; 這將根據您的composer.json
在供應商文件夾中生成自動加載文件並創建一個composer.lock
文件,即使您沒有任何依賴項。
從那里,您需要在執行代碼之前引導自動加載文件。
嘿,這已經解決了很多次,但我還是會解釋一下,以防你不理解其他問題。
所以我也遇到過這個問題,你可以在我的個人資料上找到它。
psr 根據您的路徑工作。 當你設置你的 src 路徑時,它就是從那里開始的,
例如,您的布局類似於以下內容:
vendor
your-vendor-name
your-package
src
App.php
Class.php
composer.json
那么你的 psr 位置應該有這個:
“/src”
之前應該是這樣的:
“您的供應商名稱\您的包裹\”
when using a class, make sure you composer class names start with an uppercase letter and the class inside matches the file name, make sure the class namespaces are something like this \your-vendor-name\your-package
並使用
$app = new \your-vendor-name\your-package\(then the class name you want to use, so lets say, Class.php, then you would put Class() here)
希望這可以解決您的問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.