I'm very new to PHP. I understand the concepts of OOP, but syntactically, I don't know how to extend a parent class from another file. Here is my code:
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 />'; } } ?> extended-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(); ?> I'm using MAMP to run the code, and the following error keeps coming up: Cannot declare class Animals\Animal, because the name is already in use in /path/to/file/parent.php on line 4. All tips are appreciated.
include_once()instead of justinclude()to ensure your files are only included once.