<?php
class AbstractPhoto {
public $width = 260;
public $height = 210;
public $method = 'crop';
public $type = 'unknown';
public $image = 'nophoto.jpg';
public function __construct($image) {
}
}
class Photos extends AbstractPhoto {
public function __construct($image) {
parent::__construct($image);
$this->image = $image;
}
}
class Catalog extends AbstractPhoto {
}
class PseudoArray implements ArrayAccess {
private $classTable = array (false => 'Photos', true => 'Catalog'); public function offsetGet ($offset) {
$class = $this->classTable[strlen($offset)>0]; return new $class($offset);
}
public function offsetExists ($offset) {return true;}
public function offsetSet ($offset, $value) {}
public function offsetUnset ($offset) {}
}
$properties = new PseudoArray();
PD9waHAKY2xhc3MgQWJzdHJhY3RQaG90byB7CiAgcHVibGljICR3aWR0aCA9IDI2MDsKICBwdWJsaWMgJGhlaWdodCA9IDIxMDsKICBwdWJsaWMgJG1ldGhvZCA9ICdjcm9wJzsKICBwdWJsaWMgJHR5cGUgPSAndW5rbm93bic7CiAgcHVibGljICRpbWFnZSA9ICdub3Bob3RvLmpwZyc7CiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRpbWFnZSkgewogICAgJHRoaXMtPnR5cGUgPSBzdHJ0b2xvd2VyKGdldF9jbGFzcygkdGhpcykpOwogIH0KfQoKY2xhc3MgUGhvdG9zIGV4dGVuZHMgQWJzdHJhY3RQaG90byB7CiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRpbWFnZSkgewogICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkaW1hZ2UpOwogICAgJHRoaXMtPmltYWdlID0gJGltYWdlOwogIH0KfQoKY2xhc3MgQ2F0YWxvZyBleHRlbmRzIEFic3RyYWN0UGhvdG8gewp9CgpjbGFzcyBQc2V1ZG9BcnJheSBpbXBsZW1lbnRzIEFycmF5QWNjZXNzICB7CiAgcHJpdmF0ZSAkY2xhc3NUYWJsZSA9IGFycmF5IChmYWxzZSA9PiAnUGhvdG9zJywgdHJ1ZSA9PiAnQ2F0YWxvZycpOwogIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRHZXQgKCRvZmZzZXQpIHsKICAgICRjbGFzcyA9ICR0aGlzLT5jbGFzc1RhYmxlW3N0cmxlbigkb2Zmc2V0KT4wXTsKICAgIHJldHVybiBuZXcgJGNsYXNzKCRvZmZzZXQpOwogIH0KICBwdWJsaWMgZnVuY3Rpb24gb2Zmc2V0RXhpc3RzICgkb2Zmc2V0KSB7cmV0dXJuIHRydWU7fQogIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRTZXQgKCRvZmZzZXQsICR2YWx1ZSkge30KICBwdWJsaWMgZnVuY3Rpb24gb2Zmc2V0VW5zZXQgKCRvZmZzZXQpIHt9CiB9CgoKJHByb3BlcnRpZXMgPSBuZXcgUHNldWRvQXJyYXkoKTsKCnZhcl9kdW1wKCRwcm9wZXJ0aWVzWycnXSk7Cgp2YXJfZHVtcCgkcHJvcGVydGllc1snb2xvbG8uanBnJ10pOw==