JBZoo\SimpleTypes\Parser::parse PHP Method

parse() public method

public parse ( mixed $data = null, string $forceRule = null ) : array
$data mixed
$forceRule string
return array
    public function parse($data = null, $forceRule = null)
    {
        $rule = null;
        if (is_array($data)) {
            $value = array_key_exists(0, $data) ? $data[0] : null;
            $rule = array_key_exists(1, $data) ? $data[1] : null;
            return $this->parse($value, $rule);
        } else {
            $value = strtolower(trim($data));
            $aliases = $this->getCodeList();
            foreach ($aliases as $alias) {
                if (strpos($value, $alias) !== false) {
                    $rule = $alias;
                    $value = str_ireplace($rule, '', $value);
                    break;
                }
            }
        }
        $value = $this->cleanValue($value);
        $rule = $this->checkRule($rule);
        if ($forceRule) {
            $rule = $forceRule;
        }
        return array($value, $rule);
    }

Usage Example

Beispiel #1
0
 /**
  * @param string $value
  * @param Config $config
  * @throws \JBZoo\SimpleTypes\Exception
  */
 public function __construct($value = null, Config $config = null)
 {
     $this->_type = strtolower(str_replace(__NAMESPACE__ . '\\', '', get_class($this)));
     // get custom or global config
     $config = $this->_getConfig($config);
     // debug flag (for logging)
     $this->_isDebug = (bool) $config->isDebug;
     // set default rule
     $this->_default = trim(strtolower($config->default));
     !$this->_default && $this->error('Default rule cannot be empty!');
     // create formatter helper
     $this->_formatter = new Formatter($config->getRules(), $config->defaultParams, $this->_type);
     // check that default rule
     $rules = $this->_formatter->getList(true);
     if (!array_key_exists($this->_default, $rules)) {
         throw new Exception($this->_type . ': Default rule not found!');
     }
     // create parser helper
     $this->_parser = new Parser($this->_default, $rules);
     // parse data
     list($this->_value, $this->_rule) = $this->_parser->parse($value);
     // count unique id
     self::$_counter++;
     $this->_uniqueId = self::$_counter;
     // success log
     $this->log('Id=' . $this->_uniqueId . ' has just created; dump="' . $this->dump(false) . '"');
 }