You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
802 B
53 lines
802 B
9 years ago
|
<?php
|
||
|
|
||
|
class Pet {
|
||
|
public $name;
|
||
|
public $isRunning = false;
|
||
|
|
||
9 years ago
|
private function __construct()
|
||
|
{}
|
||
|
|
||
|
public static function create($name)
|
||
|
{
|
||
|
$newPet = new static;
|
||
|
$newPet->name = $name;
|
||
|
return $newPet;
|
||
|
}
|
||
|
|
||
9 years ago
|
public function run()
|
||
|
{
|
||
|
$this->isRunning = true;
|
||
|
return $this->name . ' is running';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class Dog extends Pet {
|
||
|
protected $currentChaseTarget;
|
||
|
|
||
|
public function chase(Pet $chaseTarget)
|
||
|
{
|
||
|
$this->isRunning = true;
|
||
|
$this->currentChaseTarget = $chaseTarget;
|
||
|
$this->currentChaseTarget->run();
|
||
|
|
||
|
return $this->name . ' is chasing ' . $chaseTarget->name;
|
||
|
}
|
||
|
}
|
||
|
|
||
9 years ago
|
$cat = Pet::create('Felix');
|
||
9 years ago
|
|
||
|
var_dump($cat);
|
||
|
|
||
|
$cat->run();
|
||
|
|
||
|
var_dump($cat);
|
||
|
|
||
9 years ago
|
$dog = Dog::create('Fido');
|
||
9 years ago
|
|
||
|
var_dump($dog);
|
||
|
|
||
|
var_dump($dog->chase($cat));
|
||
|
|
||
|
var_dump($dog);
|
||
|
var_dump($cat);
|