我是PHP的新手。我理解OOP的概念,但从语法上讲,我不知道如何从另一个文件扩展父类。这是我的代码:
parent.php
<?php
namespace Animals;
class Animal{
protected $name;
protected $sound;
public static $number_of_animals = 0;
protected $id;
public $favorite_food;
function getName(){
return $this->name;
}
function __construct(){
$this->id = rand(100, 1000000);
Animal::$number_of_animals ++;
}
public function __destruct(){
}
function __get($name){
return $this->$name;
}
function __set($name, $value){
switch($name){
case 'name' :
$this->$name = $value;
break;
case 'sound' :
$this->$name = $value;
break;
case 'id' :
$this->$name = $value;
break;
default :
echo $name . " not found";
}
}
function run(){
echo $this->name . ' runs <br />';
}
}
?>
延伸型classes.php
<?php
namespace mammals;
include 'parent.php';
use Animals\Animal as Animal;
class Cheetah extends Animal{
function __construct(){
parent:: __construct();
}
}
?>
main.php
<?php
include 'extended-classes.php';
include 'parent.php';
use Animals\Animal as Animal;
use mammals\Cheetah as Cheetah;
$cheetah_one = new Cheetah();
$cheetah_one->name = 'Blur';
echo "Hello! My name is " . $cheetah_one->getName();
?>
我正在使用MAMP来运行代码,并且以下错误不断出现:Cannot declare class Animals\Animal, because the name is already in use in /path/to/file/parent.php on line 4
。所有提示都表示赞赏。
答案 0 :(得分:4)
Main.php不需要包含parent.php,因为extended-classes.php已经包含了它。或者,您可以使用include_once
或require_once
代替include
。
答案 1 :(得分:0)
要包含类和常量,最好使用
include_once or require_once
不会再引发重新声明类的错误。
答案 2 :(得分:0)
对我而言,它的使用方式。
require_once 'extended-classes.php';
require_once 'parent.php';
这是由于一次又一次地包含文件