public static function parse($line, $statement) { $line = explode(' ', $line, 2); if(!isset($line[1])) $line[1] = '.'; if(substr($line[1], -1) === ';') $line[1] = substr($line[1], 0, -1); if(substr($line[1], 0, 5) === '$this') { if(strlen($line[1]) === 5) { $line[1] = '.'; } else { $line[1] = explode('->', $line[1], 2); if(substr($line[1][1], -2) === '()') $line[1][1] = substr($line[1][1], 0, -2); $line[1] = "array('\$this', '{$line[1][1]}')"; } } $line[1] = P\Helper::quotenize($line[1]); return self::_get_namespaced_self() . '::execute(' . $line[1] . ')'; }
public static function parse($line, $statement) { $current_reflection = Ev\Evaluer::reflection(); if(!($current_reflection instanceof \ReflectionClass or $current_reflection instanceof \ReflectionMethod)) return self::error_before_eval('Cannot use self in current scope.', 'You need to be inside class or method to use self.'); extract(P\Helper::extract_name_function_arguments($line, 'self::')); $fake_name = substr($name, 6); if($function !== false) $fake_name = "{$fake_name}()"; if(!empty($arguments)) $arguments = ", {$arguments}"; $real = self::_get_namespaced_self() . '::execute(\'' . $fake_name . '\'' . $arguments . ')'; return $function === false ? str_replace($name, $real, $line) : str_replace($function, $real, $line); }