Mega Code Archive

 
Categories / Php / Class
 

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(); ?>