} public function __call($name, $params) { echo $name . ' method does not exist'; print_r($params); echo '<br>' . "\n"; } public function __toString() { return 'The name of this object is ' . $this->petName . '<br>' . "\n"; } public function __clone() { echo 'You have created a clone of ' . $this->petName . '<br>' . "\n"; } public function __invoke() { echo 'You can not run this object as a method. <br>' . "\n"; } public function __destruct() { echo $this->petName . ' was destroyed.<br>' . "\n"; } } $jack = new Pet('Jack'); $jack->foo; $jack->foo = 5; $jack->foo(5, 10, 'Foo'); $clone = clone $jack; $jack(); echo $jack;