<?php
class nemyx {
public static function __callStatic($name, $arguments) {
if ($name === 'eval') {
return array_reduce($arguments, function($carry, $item) {return $carry * $item;}, 1); } else {
die("Метод $name не найден."); }
}
function __construct() {
}
public function __call($name, $arguments) {
if ($name === 'eval') {
if(count($arguments) > 0) { die("Аргументы не требуются."); }
return array_reduce($this->data, function($carry, $item) {return $carry * $item;}, 1); } else {
die("Метод $name не найден."); }
}
}
echo nemyx::{'eval'}(1, 2, 3, 4, 5) . PHP_EOL; // если написать nemyx::eval, то будет синт. ошибка
$kokoko = new nemyx(1, 2, 3, 4, 5);
echo $kokoko->eval() . PHP_EOL
;
PD9waHAKCmNsYXNzIG5lbXl4IHsKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gX19jYWxsU3RhdGljKCRuYW1lLCAkYXJndW1lbnRzKSB7CiAgICAgICAgaWYgKCRuYW1lID09PSAnZXZhbCcpIHsKICAgICAgICAgICAgcmV0dXJuIGFycmF5X3JlZHVjZSgkYXJndW1lbnRzLCBmdW5jdGlvbigkY2FycnksICRpdGVtKSB7cmV0dXJuICRjYXJyeSAqICRpdGVtO30sIDEpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGRpZSgi0JzQtdGC0L7QtCAkbmFtZSDQvdC1INC90LDQudC00LXQvS4iKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSAkZGF0YSA9IGFycmF5KCk7CgogICAgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7CiAgICAgICAgJHRoaXMtPmRhdGEgPSBmdW5jX2dldF9hcmdzKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY2FsbCgkbmFtZSwgJGFyZ3VtZW50cykgewogICAgICAgIGlmICgkbmFtZSA9PT0gJ2V2YWwnKSB7CiAgICAgICAgICAgIGlmKGNvdW50KCRhcmd1bWVudHMpID4gMCkgewogICAgICAgICAgICAgICAgZGllKCLQkNGA0LPRg9C80LXQvdGC0Ysg0L3QtSDRgtGA0LXQsdGD0Y7RgtGB0Y8uIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGFycmF5X3JlZHVjZSgkdGhpcy0+ZGF0YSwgZnVuY3Rpb24oJGNhcnJ5LCAkaXRlbSkge3JldHVybiAkY2FycnkgKiAkaXRlbTt9LCAxKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBkaWUoItCc0LXRgtC+0LQgJG5hbWUg0L3QtSDQvdCw0LnQtNC10L0uIik7CiAgICAgICAgfQogICAgfQoKfQoKZWNobyBuZW15eDo6eydldmFsJ30oMSwgMiwgMywgNCwgNSkgLiBQSFBfRU9MOyAvLyDQtdGB0LvQuCDQvdCw0L/QuNGB0LDRgtGMIG5lbXl4OjpldmFsLCDRgtC+INCx0YPQtNC10YIg0YHQuNC90YIuINC+0YjQuNCx0LrQsAoKJGtva29rbyA9IG5ldyBuZW15eCgxLCAyLCAzLCA0LCA1KTsKCmVjaG8gJGtva29rby0+ZXZhbCgpIC4gUEhQX0VPTDsK