[英]Composer Gives Error, “Class Not Found”
我正在使用Windows 10.在根目錄中創建文件夾src
,我在其中創建了兩個文件。
目錄結構(在運行composer install
之前):
│
├── composer.json
├── run.php
│
└── src
├── childclass.php
└── parentclass.php
根目錄中的兩個文件:
composer.json:
{
"name": "myvendor/mypackage",
"description": "nothing",
"authors": [
{
"name": "Omar Tariq",
"email": "XXXXX@gmail.com"
}
],
"require": {},
"autoload": {
"psr-4": {
"myns\\": "src/"
}
}
}
run.php:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use myns\childclass as childclass;
$childclass = new childclass();
$childclass->abc();
src文件夾中的兩個文件:
childclass.php:
<?php
require_once 'parentclass.php';
use myns\parentclass as parentclass;
class childclass extends parentclass
{
public function abc()
{
echo 'hello world';
}
}
parentclass.php:
<?php
namespace myns;
abstract class parentclass
{
abstract public function abc();
}
運行composer install
后的目錄結構:
│
├── composer.json
├── run.php
│
├── src
│ ├── childclass.php
│ └── parentclass.php
│
└── vendor
├── autoload.php
│
└── composer
├── autoload_classmap.php
├── autoload_namespaces.php
├── autoload_psr4.php
├── autoload_real.php
├── ClassLoader.php
├── installed.json
└── LICENSE
現在,當我跑:
php run.php
我收到此錯誤:
致命錯誤:在第7行的C:\\ wamp ... \\ run.php中找不到類'myns \\ childclass'
在composer.json
你為src
文件夾定義了你使用myns
命名空間,所以在你的childclass.php
你應該使用
namespace myns;
它也沒有必要添加:
require_once 'parentclass.php';
要么
use myns\parentclass as parentclass;
所以你的childclass.php看起來像這樣:
<?php
namespace myns;
class childclass extends parentclass
{
public function abc()
{
echo 'hello world';
}
}
另外在run.php
文件中你可以替換:
use myns\childclass as childclass;
成
use myns\childclass;
您不需要使用as
好像您不想在課程中使用其他名稱一樣。
您還應該考慮使用帶有大寫字母(Studly caps)的名稱空間和類相同的名稱空間。 而不是myns
使用MyNs
而不是parentclass
使用ParentClass
。 您應該查看PSR-1編碼標准和PSR-2編碼標准,以遵循最佳編碼實踐。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.