![](/img/trans.png)
[英]Composer autoloader + slim framework - fatal error: Class 'Slim\Slim' not found?
[英]Fatal error due to composer.json in slim tree framework
我一直在關注Alex Gareth的構建購物車的教程 。 我有庫存,因為我認為composer.json無法正確自動加載文件。 這是我的錯誤:
“致命錯誤:未捕獲的錯誤:在C:\\ xampp \\ htdocs \\ order \\ bootstrap \\ app.php:10中找不到類'Order \\ App':堆棧跟蹤:#0 C:\\ xampp \\ htdocs \\ order \\ public \\ index。 php(3):require()#1 {main}在第10行的C:\\ xampp \\ htdocs \\ order \\ bootstrap \\ app.php中拋出”
composer.json文件
{
"require": {
"slim/slim": "^3.0",
"slim/twig-view": "^2.4",
"php-di/slim-bridge": "^2.0",
"illuminate/database": "^5.6"
},
"autoload": {
"psr-4": {
"Order\\": "Order"
}
}
}
應用類別
namespace Order;
use DI\ContainerBuilder;
use DI\Bridge\Slim\App as DIBridge;
class App extends DIBridge{
protected function configureContainer(ContainerBuilder $builder){
$builder->addDefinitions([
'settings.displayErrorDetails' => true
]);
//
}
}
app.php文件,是引導文件
<?php
use Order\App;
session_start();
require __DIR__ . '/../vendor/autoload.php';
//require __DIR__ . '/../app/App.php';
$app = new App;
如果我取消注釋我在App.php中拉出的require行,則可以正常工作。
目錄結構:
作業系統:Windows 10
嘗試將autoload
更改為以下內容:
"autoload": {
"psr-4": {
"Order\\": ""
}
}
由於App.php
其中,因此您應該將自動加載更改為針對app/
文件夾:
"autoload": {
"psr-4": {
"Order\\": "app/"
}
}
這實際上是告訴自動加載器,所有具有命名空間Order\\
類都存在於app/
。
因此,從現在開始,如果您要在app/
創建子文件夾:
app/
App.php
Foo/
Bar.php
然后Bar.php
應該具有命名空間Order\\Foo
,您將使用以下Order\\Foo
訪問該類: $bar = new Order\\Foo\\Bar()
。
注意:這是文件/文件夾框很重要的地方。 名稱空間的大小寫和類名稱的大小寫必須與文件和文件夾的大小寫相同。 否則,它仍然可以在Windows上為您工作,但在其他操作系統(例如linux)上將失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.