Example #1
0
	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] . ')';
	}
Example #2
0
	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);
	}