Factory
/* Factory Pattern */
class Book {
  private $book_name;
  private $book_author;
  const BR = '<br>';

  public function __construct($name, $author) {
    $this->book_name = $name;
    $this->book_author = $author;
  }

  public function getNameAndAuthor() {
    return $this->book_name . ' - ' . $this->book_author . self::BR;
  }

}

class BookFactory {

  public static function create($name, $author) {
    return new Book($name, $author);
  }

}

$book1 = BookFactory::create('Understanding Cats', 'Sir Meow');
$book2 = BookFactory::create('Why is my sister naked?', 'Dr. Phil Eh Buster');

echo "<b>Book List</b><br>\n";
echo $book1->getNameAndAuthor();
echo $book2->getNameAndAuthor();