<?php
class Console
{
public $lastLineClosed = true;
public function __construct($closeLine=true) {
$this->lastLineClosed = $closeLine;
}
public function __destruct() {
if (!$this->lastLineClosed) {
echo PHP_EOL;
}
}
public function __call($name, $arguments) { //немного больше магии
return $this;
}
public function log($text) {
if ($this->lastLineClosed) {
echo 'out says: ';
} else {
$text=" ".$text;
}
echo $text;
if ($this->lastLineClosed) {
return new Console(false);
}
return $this;
}
}
echo "---------\n";
$console = new Console;
$console ->log('Hello')->log('world'); $console ->log('Hello')->log('world')->magic_run(" magic! ")->log(2); echo "---------\n";
function magic_run($arg) {
echo " -==$arg==-";
}
PD9waHAKCgpjbGFzcyBDb25zb2xlCnsKCXB1YmxpYyAkbGFzdExpbmVDbG9zZWQgPSB0cnVlOwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRjbG9zZUxpbmU9dHJ1ZSkgewoJCSR0aGlzLT5sYXN0TGluZUNsb3NlZCA9ICRjbG9zZUxpbmU7CgkJCgl9CglwdWJsaWMgZnVuY3Rpb24gIF9fZGVzdHJ1Y3QoKSB7CgkJaWYgKCEkdGhpcy0+bGFzdExpbmVDbG9zZWQpIHsKCQkJZWNobyBQSFBfRU9MOwoJCX0KCX0KCQoJcHVibGljIGZ1bmN0aW9uIF9fY2FsbCgkbmFtZSwgJGFyZ3VtZW50cykgeyAvL9C90LXQvNC90L7Qs9C+INCx0L7Qu9GM0YjQtSDQvNCw0LPQuNC4CgkJY2FsbF91c2VyX2Z1bmNfYXJyYXkoJG5hbWUsJGFyZ3VtZW50cyk7CgkJcmV0dXJuICR0aGlzOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gbG9nKCR0ZXh0KQoJewoJCWlmICgkdGhpcy0+bGFzdExpbmVDbG9zZWQpIHsKCQkJZWNobyAnb3V0IHNheXM6ICc7CgkJCSR0ZXh0PXVjZmlyc3QgKCR0ZXh0KTsKCQl9IGVsc2UgewoJCQkkdGV4dD0iICIuJHRleHQ7CgkJfQoJCWVjaG8gJHRleHQ7CgkJaWYgKCR0aGlzLT5sYXN0TGluZUNsb3NlZCkgewoJCQlyZXR1cm4gbmV3IENvbnNvbGUoZmFsc2UpOwoJCX0KCQlyZXR1cm4gJHRoaXM7Cgl9Cn0KCmVjaG8gIi0tLS0tLS0tLVxuIjsKJGNvbnNvbGUgPSBuZXcgQ29uc29sZTsKJGNvbnNvbGUgLT5sb2coJ0hlbGxvJyk7CiRjb25zb2xlIC0+bG9nKCd3b3JsZCcpOwoKJGNvbnNvbGUgLT5sb2coJ0hlbGxvJyktPmxvZygnd29ybGQnKTsKJGNvbnNvbGUgLT5sb2coJ0hlbGxvJyktPmxvZygnd29ybGQnKS0+bWFnaWNfcnVuKCIgbWFnaWMhICIpLT5sb2coMik7CmVjaG8gIi0tLS0tLS0tLVxuIjsKCgpmdW5jdGlvbiBtYWdpY19ydW4oJGFyZykgewogICAgc2xlZXAoMyk7CgllY2hvICIgLT09JGFyZz09LSI7CgkKfQ==