<?php
class Connection
{
public function __construct
(array $data) {
if (isset($data['a'], $data['b'], $data['c'])) { echo "OK".PHP_EOL;
} else {
throw new Exception("Some big error");
}
}
public function printVar($var)
{
echo $var.PHP_EOL;
}
}
class BlogPost {
public function __construct
(array $data) {
try {
$this->db = new Connection($data);
$this->db->printVar('Hello world');
} catch (Exception $e) {
exit($e->getMessage().PHP_EOL
); }
}
}
$post1 = new BlogPost
(array('a' => 'a', 'b' => 'b', 'c' => 'c')); // will work $post2 = new BlogPost
(array('a' => 'a', 'b' => 'b')); // will fail
PD9waHAKCmNsYXNzIENvbm5lY3Rpb24KewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRkYXRhKQogICAgewogICAgICAgIGlmIChpc3NldCgkZGF0YVsnYSddLCAkZGF0YVsnYiddLCAkZGF0YVsnYyddKSkgewogICAgICAgICAgICBlY2hvICJPSyIuUEhQX0VPTDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJTb21lIGJpZyBlcnJvciIpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcHJpbnRWYXIoJHZhcikKICAgIHsKICAgICAgICBlY2hvICR2YXIuUEhQX0VPTDsKICAgIH0KfQoKY2xhc3MgQmxvZ1Bvc3QgewogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGRhdGEpCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHRoaXMtPmRiID0gbmV3IENvbm5lY3Rpb24oJGRhdGEpOwogICAgICAgICAgICAkdGhpcy0+ZGItPnByaW50VmFyKCdIZWxsbyB3b3JsZCcpOwogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICBleGl0KCRlLT5nZXRNZXNzYWdlKCkuUEhQX0VPTCk7CiAgICAgICAgfQogICAgfQp9CgokcG9zdDEgPSBuZXcgQmxvZ1Bvc3QoYXJyYXkoJ2EnID0+ICdhJywgJ2InID0+ICdiJywgJ2MnID0+ICdjJykpOyAvLyB3aWxsIHdvcmsKJHBvc3QyID0gbmV3IEJsb2dQb3N0KGFycmF5KCdhJyA9PiAnYScsICdiJyA9PiAnYicpKTsgLy8gd2lsbCBmYWlsCg==