<?php
interface Printable {
public function __toString();
}
class MyPrintableClass implements Printable {
public $myNumericProperty;
public function __construct() {
$this->myNumericProperty = 10;
}
public function __toString() {
return 'My numeric property is ' . $this->myNumericProperty;
}
}
function printSomething(Printable $aString) {
echo $aString;
}
printSomething(new MyPrintableClass());
printSomething("You can't print a real sting");
My numeric property is 10
Fatal error: Uncaught TypeError: printSomething(): Argument #1 ($aString) must be of type Printable, string given, called in /in/K0KjM on line 24 and defined in /in/K0KjM:19
Stack trace:
#0 /in/K0KjM(24): printSomething('You can't print...')
#1 {main}
thrown in /in/K0KjM on line 19
Process exited with code 255.
My numeric property is 10
Fatal error: Uncaught TypeError: Argument 1 passed to printSomething() must implement interface Printable, string given, called in /in/K0KjM on line 24 and defined in /in/K0KjM:19
Stack trace:
#0 /in/K0KjM(24): printSomething('You can't print...')
#1 {main}
thrown in /in/K0KjM on line 19
Process exited with code 255.
My numeric property is 10
Catchable fatal error: Argument 1 passed to printSomething() must implement interface Printable, string given, called in /in/K0KjM on line 24 and defined in /in/K0KjM on line 19
Process exited with code 255.