Location: PHPKode > scripts > PHON > phon/phon/PHONEvaluator.php
<?php
/**
 * File for the PHONEvaluator class.
 * @package PHON
 */

require_once 'PHONValidator.php';

/**
 * Singleton class that safely evaluates PHON data into PHP values.
 * @package PHON
 */
final class PHONEvaluator {
	/**
	 * Singleton instance.
	 * @var PHONEvaluator
	 */
	private static $instance;
	
	/**
	 * Singleton access.
	 * @return PHONEvaluator Singleton instance.
	 */
	public static function getInstance() {
		if (!self::$instance) {
			self::$instance = new PHONEvaluator();
		}
		return self::$instance;
	}
	
	/**
	 * A reference to the validator singleton.
	 * @var PHONValidator
	 */
	private $validator;
	
	/**
	 * Constructor.
	 */
	private function __construct() {
		$this->validator = PHONValidator::getInstance();
	}
	
	/**
	 * Evaluates the provided PHON data.
	 * @param string $phon The PHON data.
	 * @return mixed The PHP values represented by the PHON data.
	 */
	public function evaluate($phon) {
		if (!$this->validator->isSecure($phon)) {
			require_once 'InvalidPHON.php';
			throw new InvalidPHON('PHON data found to be unsecure and evaluation was halted', $phon);
		}
		$data = null;
		if (@eval("\$data = $phon;") === false) {
			require_once 'InvalidPHON.php';
			throw new InvalidPHON('PHON evaluation halted due to invalid data format', $phon);
		}
		return $data;
	}
}
Return current item: PHON