<?php
class Library
{
private $items = [];
public function addInventory(IItem $item)
{
$this->items[] = $item;
}
}
interface IItem
{
public function getTitle();
}
class Hardback implements IItem
{
private $title = null;
private $author = null;
public function __construct($title, $author)
{
$this->title = $title;
$this->author = $author;
echo "New Title added for Hardback\r\n";
}
public function getTitle()
{
return $thi->title;
}
}
class Softback implements IItem
{
private $title = null;
private $author = null;
public function __construct($title, $author)
{
$this->title = $title;
$this->author = $author;
echo "New Title added for Softback\r\n";
}
public function getTitle()
{
return $thi->title;
}
}
class Movie implements IItem
{
private $title = null;
private $length = null;
public function __construct($title, $length)
{
$this->title = $title;
$this->lenght = $length;
echo "New Movie Title added\r\n";
}
public function getTitle()
{
return $thi->title;
}
}
$library = new Library();
$inventoryItems = [
new Hardback('Wind in the Willows (hb)', "Someone"),
new Softback('Wind in the Willows (sb)', "Someone"),
new Softback('Things that go bump (sb)', "Someone else"),
new Movie('Max Payne', "120 min"),
];
foreach ($inventoryItems as $material) {
$library->addInventory($material);
}
PD9waHAKCmNsYXNzIExpYnJhcnkKewogICAgcHJpdmF0ZSAkaXRlbXMgPSBbXTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkSW52ZW50b3J5KElJdGVtICRpdGVtKQogICAgewogICAgICAgICR0aGlzLT5pdGVtc1tdID0gJGl0ZW07CiAgICB9Cn0KaW50ZXJmYWNlIElJdGVtCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUaXRsZSgpOwp9CmNsYXNzIEhhcmRiYWNrIGltcGxlbWVudHMgSUl0ZW0KewogICAgcHJpdmF0ZSAkdGl0bGUgPSBudWxsOwogICAgcHJpdmF0ZSAkYXV0aG9yID0gbnVsbDsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdGl0bGUsICRhdXRob3IpCiAgICB7CiAgICAJJHRoaXMtPnRpdGxlID0gJHRpdGxlOwogICAgCSR0aGlzLT5hdXRob3IgPSAkYXV0aG9yOwogICAgCWVjaG8gIk5ldyBUaXRsZSBhZGRlZCBmb3IgSGFyZGJhY2tcclxuIjsKICAgIH0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUaXRsZSgpCiAgICB7CiAgICAJcmV0dXJuICR0aGktPnRpdGxlOwogICAgfQogICAgCn0KCgpjbGFzcyBTb2Z0YmFjayBpbXBsZW1lbnRzIElJdGVtCnsKICAgIAogICAgcHJpdmF0ZSAkdGl0bGUgPSBudWxsOwogICAgcHJpdmF0ZSAkYXV0aG9yID0gbnVsbDsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdGl0bGUsICRhdXRob3IpCiAgICB7CiAgICAJJHRoaXMtPnRpdGxlID0gJHRpdGxlOwogICAgCSR0aGlzLT5hdXRob3IgPSAkYXV0aG9yOwogICAgCWVjaG8gIk5ldyBUaXRsZSBhZGRlZCBmb3IgU29mdGJhY2tcclxuIjsKICAgIH0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUaXRsZSgpCiAgICB7CiAgICAJcmV0dXJuICR0aGktPnRpdGxlOwogICAgfQp9CgpjbGFzcyBNb3ZpZSBpbXBsZW1lbnRzIElJdGVtCnsKCXByaXZhdGUgJHRpdGxlID0gbnVsbDsKICAgIHByaXZhdGUgJGxlbmd0aCA9IG51bGw7CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdGl0bGUsICRsZW5ndGgpCiAgICB7CiAgICAJJHRoaXMtPnRpdGxlID0gJHRpdGxlOwogICAgCSR0aGlzLT5sZW5naHQgPSAkbGVuZ3RoOwogICAgCWVjaG8gIk5ldyBNb3ZpZSBUaXRsZSBhZGRlZFxyXG4iOwogICAgfQogICAgcHVibGljIGZ1bmN0aW9uIGdldFRpdGxlKCkKICAgIHsKICAgIAlyZXR1cm4gJHRoaS0+dGl0bGU7CiAgICB9CgkKfQoKJGxpYnJhcnkgPSBuZXcgTGlicmFyeSgpOwokaW52ZW50b3J5SXRlbXMgPSBbCgluZXcgSGFyZGJhY2soJ1dpbmQgaW4gdGhlIFdpbGxvd3MgKGhiKScsICJTb21lb25lIiksCgluZXcgU29mdGJhY2soJ1dpbmQgaW4gdGhlIFdpbGxvd3MgKHNiKScsICJTb21lb25lIiksCgluZXcgU29mdGJhY2soJ1RoaW5ncyB0aGF0IGdvIGJ1bXAgKHNiKScsICJTb21lb25lIGVsc2UiKSwKCW5ldyBNb3ZpZSgnTWF4IFBheW5lJywgIjEyMCBtaW4iKSwKCV07Cgpmb3JlYWNoICgkaW52ZW50b3J5SXRlbXMgYXMgJG1hdGVyaWFsKSB7CiAgJGxpYnJhcnktPmFkZEludmVudG9yeSgkbWF0ZXJpYWwpOwp9Cg==