我有一个Duck接口(本例中是抽象类),而Class MallardDuck正在实现它。我正在尝试从Duck
名称空间自动加载文件,但会收到致命错误。
PHP Fatal error: Interface 'Duck\Duck' not found in /var/www/HeadFirstDesignPattern/MallardDuck.php on line 11
我习惯在Laravel工作,为我加载文件,但我想自己使用composer。我知道这不是一个很大的问题,但是当你不知道什么的时候,它被认为是一个非常大的问题。无论如何,这里是我的类的代码和composer.json
Duck类代码:
<?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 Duck\Duck;
/**
* 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\\": ""
指向我应用的根目录。这是我的app目录结构:
vendor
autoload.php
app
Duck.php
MallardDuck.php
答案 0 :(得分:0)
你不能implement
抽象类,你只能extend
它。