从同一命名空间导入类/接口时出现致命错误



我有一个鸭子接口(在本例中为抽象类),类MallardDuck正在实现它。我正在尝试从Duck命名空间自动加载文件,但收到致命错误。

PHP Fatal error:  Interface 'DuckDuck' not found in /var/www/HeadFirstDesignPattern/MallardDuck.php on line 11

我习惯于在为我加载文件的 Laravel中工作,但我想使用作曲家自己做。我知道这不是一个很大的问题,但是当你不知道某事时,它就被认为是一个非常大的问题。无论如何,这是我的类和composer.json的代码

鸭类代码:

<?php namespace Duck;
//Duck.php
/**
* Description of Duck
*
* @author me
*/
abstract class Duck {
    public abstract function display();
    public function quack() {
        echo 'quack';
    }
    public function swim() {
        echo 'swim';
    }
}

野鸭代码

//MallardDuck.php
use DuckDuck;
/**
 * Description of MallardDuck
 *
 * @author mkhuram
 */
class MallardDuck implements Duck{
    public function display() {
        echo __NAMESPACE__;
        echo "n".__CLASS__;
    }
}
$md = new MallardDuck();
$md->display();

Compser.json 文件

{
    "name": "vendor/head-first-design-pattern",
    "description": "Description of project HeadFirstDesignPattern.",
    "authors": [
        {
            "name": "me",
            "email": "my@email.com"
        }
    ],
    "require": {},
    "autoload": {
        "psr-4":{
            "Duck\": ""
        }
    }
}

"Duck\": ""指向我的应用程序的根目录。这是我的应用目录结构:

vendor
    autoload.php
app
    Duck.php
    MallardDuck.php

你不能implement抽象类,你只能extend它。

相关内容

  • 没有找到相关文章

最新更新