簡體   English   中英

Composer給出錯誤,“找不到類”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM