PHP:从另一个文件调用父类

时间:2016-08-16 21:41:29

标签: php

我是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。所有提示都表示赞赏。

3 个答案:

答案 0 :(得分:4)

Main.php不需要包含parent.php,因为extended-classes.php已经包含了它。或者,您可以使用include_oncerequire_once代替include

答案 1 :(得分:0)

要包含类和常量,最好使用

include_once  or   require_once

不会再引发重新声明类的错误。

答案 2 :(得分:0)

对我而言,它的使用方式。

require_once 'extended-classes.php';
require_once 'parent.php';

这是由于一次又一次地包含文件