Define Class As Constructor Parameter

 
    <?php
class PersonWriter {    function writeName( Person $p ) {
        print $p->getName()."\n";
    }    function writeAge( Person $p ) {
        print $p->getAge()."\n";
    }
}class Person {
    private $writer;    function __construct( PersonWriter $writer ) {
        $this->writer = $writer;
    }    function __call( $method, $args ) {
        if ( method_exists( $this->writer, $method ) ) {
            return $this->writer->$method( $this );
        }
    }    function getName()  {
        return "Joe";
    }
    function getAge() {
        return 44;
    }
}$person= new Person( new PersonWriter() );
$person->writeName();
$person->writeAge();
?>

Enjoyed this post? Share it!

 

Leave a comment

Your email address will not be published.