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


PHP: calling a parent class from another file

我是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 />';
    }
}
?>

扩展类.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。感谢所有提示。

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

为了包含类和常量,最好使用

include_once  or   require_once

在重新声明类时不会引发更多错误。

对我来说,它是通过使用来工作的。

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

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