<?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 не найден.");
        }
    }

    private $data = array();

    function __construct() {
        $this->data = func_get_args();
    }

    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;
