name = $name; return $newPet; } 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; } } $cat = Pet::create('Felix'); var_dump($cat); $cat->run(); var_dump($cat); $dog = Dog::create('Fido'); var_dump($dog); var_dump($dog->chase($cat)); var_dump($dog); var_dump($cat);