<?php
namespace clases;
abstract class MyParent{ abstract function name(); }
class Foo extends MyParent{ function name(){ return "Foo class"; } }
class Bar extends MyParent{ function name(){ return "Bar class"; } }
function doSomething(\clases\MyParent $object){ echo 'Good';}
$object = new Foo();
doSomething($object);
$object2 = new \stdClass();
doSomething($object2);
Good
Fatal error: Uncaught TypeError: clases\doSomething(): Argument #1 ($object) must be of type clases\MyParent, stdClass given, called in /in/tqV3s on line 17 and defined in /in/tqV3s:9
Stack trace:
#0 /in/tqV3s(17): clases\doSomething(Object(stdClass))
#1 {main}
thrown in /in/tqV3s on line 9
Process exited with code 255.
Good
Fatal error: Uncaught TypeError: Argument 1 passed to clases\doSomething() must be an instance of clases\MyParent, instance of stdClass given, called in /in/tqV3s on line 17 and defined in /in/tqV3s:9
Stack trace:
#0 /in/tqV3s(17): clases\doSomething(Object(stdClass))
#1 {main}
thrown in /in/tqV3s on line 9
Process exited with code 255.
Good
Catchable fatal error: Argument 1 passed to clases\doSomething() must be an instance of clases\MyParent, instance of stdClass given, called in /in/tqV3s on line 17 and defined in /in/tqV3s on line 9
Process exited with code 255.