protected function placeholderClb($matches)
    {
        $placeholder = isset($matches[1]) ? $matches[1] : '';
        if (isset($matches[3])) {
            $name = $matches[3];
            if (empty($name)) {
                /* There is a named placeholder without name ("?set:") */
                throw new UnknownPlaceholder($matches[0]);
            }
        } else {
            $name = null;
            if ($placeholder == '?') { // "??" for question mark
                return '?';
            }
        }
        if ($name) {
            if ($this->counter == 0) {
                $this->named = true;
            } elseif (!$this->named) {
                /* There is a named placeholder although already used regular */
                throw new MixedPlaceholder($matches[0]);
            }
            if (!array_key_exists($name, $this->data)) {
                throw new DataNamed($name);
            }
            $value = $this->data[$name];
        } elseif ($this->named) {
            /* There is a regular placeholder although already used named */
            throw new MixedPlaceholder($matches[0]);
        } else {
            if (!array_key_exists($this->counter, $this->data)) {
                /* Data for regular placeholders is ended */
                throw new DataNotEnough(count($this->data), $this->counter);
            }
            $value = $this->data[$this->counter];
        }
        $this->counter++;
        $parser = new ParserPH($placeholder);
        $type = $parser->getType();
        $modifiers = $parser->getModifiers();
        $method = 'replacement'.strtoupper($type);
        return $this->$method($value, $modifiers);
    }
protected function placeholderClb($matches)
    {
        $placeholder = isset($matches[1]) ? $matches[1] : '';
        if (isset($matches[3])) {
            $name = $matches[3];
            if (empty($name)) {
                /* There is a named placeholder without name ("?set:") */
                throw new UnknownPlaceholder($matches[0]);
            }
        } else {
            $name = null;
            if ($placeholder == '?') { // "??" for question mark
                return '?';
            }
        }
        if ($name) {
            if ($this->counter == 0) {
                $this->named = true;
            } elseif (!$this->named) {
                /* There is a named placeholder although already used regular */
                throw new MixedPlaceholder($matches[0]);
            }
            if (!array_key_exists($name, $this->data)) {
                throw new DataNamed($name);
            }
            $value = $this->data[$name];
        } elseif ($this->named) {
            /* There is a regular placeholder although already used named */
            throw new MixedPlaceholder($matches[0]);
        } else {
            if (!array_key_exists($this->counter, $this->data)) {
                /* Data for regular placeholders is ended */
                throw new DataNotEnough(count($this->data), $this->counter);
            }
            $value = $this->data[$this->counter];
        }
        $this->counter++;
        $parser = new ParserPH($placeholder);
        $type = $parser->getType();
        $modifiers = $parser->getModifiers();
        $method = 'replacement'.strtoupper($type);
        return $this->$method($value, $modifiers);
    }
protected function placeholderClb ( $ matches ) { $ placeholder = isset ( $ matches [ 1 ] ) ? $ matches [ 1 ] : '' ; if ( isset ( $ matches [ 3 ] ) ) { $ name = $ matches [ 3 ] ; if ( empty ( $ name ) ) { /* There is a named placeholder without name ("?set:") */ throw new UnknownPlaceholder ( $ matches [ 0 ] ) ; } } else { $ name = null ; if ( $ placeholder == '?' ) { // "??" for question mark return '?' ; } } if ( $ name ) { if ( $ this -> counter == 0 ) { $ this -> named = true ; } elseif ( ! $ this -> named ) { /* There is a named placeholder although already used regular */ throw new MixedPlaceholder ( $ matches [ 0 ] ) ; } if ( ! array_key_exists ( $ name , $ this -> data ) ) { throw new DataNamed ( $ name ) ; } $ value = $ this -> data [ $ name ] ; } elseif ( $ this -> named ) { /* There is a regular placeholder although already used named */ throw new MixedPlaceholder ( $ matches [ 0 ] ) ; } else { if ( ! array_key_exists ( $ this -> counter , $ this -> data ) ) { /* Data for regular placeholders is ended */ throw new DataNotEnough ( count ( $ this -> data ) , $ this -> counter ) ; } $ value = $ this -> data [ $ this -> counter ] ; } $ this -> counter ++ ; $ parser = new ParserPH ( $ placeholder ) ; $ type = $ parser -> getType ( ) ; $ modifiers = $ parser -> getModifiers ( ) ; $ method = 'replacement' . strtoupper ( $ type ) ; return $ this -> $ method ( $ value , $ modifiers ) ; }
Replaces a next placeholder in the pattern

@param array $matches
@return string
@throws \go\DB\Exceptions\Templater
Replaces a next placeholder in the pattern