<?php
class SimpleBook {
private $author ;
private $title ;
function __construct( $author_in , $title_in ) {
$this -> author = $author_in ;
$this -> title = $title_in ;
}
function getAuthor( ) {
return $this -> author ;
}
function getTitle( ) {
return $this -> title ;
}
}
class BookAdapter {
private $book ;
function __construct( SimpleBook $book_in ) {
$this -> book = $book_in ;
}
function getAuthorAndTitle( ) {
return $this -> book -> getTitle ( ) . ' by ' . $this -> book -> getAuthor ( ) ;
}
}
// client
writeln( 'BEGIN TESTING ADAPTER PATTERN' ) ;
writeln( '' ) ;
$book = new SimpleBook( "Gamma, Helm, Johnson, and Vlissides" , "Design Patterns" ) ;
$bookAdapter = new BookAdapter( $book ) ;
writeln( 'Author and Title: ' . $bookAdapter -> getAuthorAndTitle ( ) ) ;
writeln( '' ) ;
writeln( 'END TESTING ADAPTER PATTERN' ) ;
function writeln( $line_in ) {
echo $line_in . "<br/>" ;
}
PD9waHAKCmNsYXNzIFNpbXBsZUJvb2sgewogICAgcHJpdmF0ZSAkYXV0aG9yOwogICAgcHJpdmF0ZSAkdGl0bGU7CiAgICBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkYXV0aG9yX2luLCAkdGl0bGVfaW4pIHsKICAgICAgICAkdGhpcy0+YXV0aG9yID0gJGF1dGhvcl9pbjsKICAgICAgICAkdGhpcy0+dGl0bGUgID0gJHRpdGxlX2luOwogICAgfQogICAgZnVuY3Rpb24gZ2V0QXV0aG9yKCkgewogICAgICAgIHJldHVybiAkdGhpcy0+YXV0aG9yOwogICAgfQogICAgZnVuY3Rpb24gZ2V0VGl0bGUoKSB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50aXRsZTsKICAgIH0KfQoKY2xhc3MgQm9va0FkYXB0ZXIgewogICAgcHJpdmF0ZSAkYm9vazsKICAgIGZ1bmN0aW9uIF9fY29uc3RydWN0KFNpbXBsZUJvb2sgJGJvb2tfaW4pIHsKICAgICAgICAkdGhpcy0+Ym9vayA9ICRib29rX2luOwogICAgfQogICAgZnVuY3Rpb24gZ2V0QXV0aG9yQW5kVGl0bGUoKSB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5ib29rLT5nZXRUaXRsZSgpLicgYnkgJy4kdGhpcy0+Ym9vay0+Z2V0QXV0aG9yKCk7CiAgICB9Cn0KCiAgLy8gY2xpZW50CgogIHdyaXRlbG4oJ0JFR0lOIFRFU1RJTkcgQURBUFRFUiBQQVRURVJOJyk7CiAgd3JpdGVsbignJyk7CgogICRib29rID0gbmV3IFNpbXBsZUJvb2soIkdhbW1hLCBIZWxtLCBKb2huc29uLCBhbmQgVmxpc3NpZGVzIiwgIkRlc2lnbiBQYXR0ZXJucyIpOwogICRib29rQWRhcHRlciA9IG5ldyBCb29rQWRhcHRlcigkYm9vayk7CiAgd3JpdGVsbignQXV0aG9yIGFuZCBUaXRsZTogJy4kYm9va0FkYXB0ZXItPmdldEF1dGhvckFuZFRpdGxlKCkpOwogIHdyaXRlbG4oJycpOwoKICB3cml0ZWxuKCdFTkQgVEVTVElORyBBREFQVEVSIFBBVFRFUk4nKTsKCiAgZnVuY3Rpb24gd3JpdGVsbigkbGluZV9pbikgewogICAgZWNobyAkbGluZV9pbi4iPGJyLz4iOwogIH0K