我有一个鸭子接口(在本例中为抽象类),类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
它。