Я читал книгу о фреймворках, называемых PRO PHP MVC. В книге был создан класс StringMethods. Код выглядит так.Нормализация строки регулярного выражения
class StringMethods
{
private static $_delimiter = "#";
private function __construct()
{
// do nothing
}
private function __clone()
{
// do nothing
}
private static function _normalize($pattern)
{
return self::$_delimiter.trim($pattern, self::$_delimiter).self::$_delimiter;
}
public static function getDelimiter()
{
return self::$_delimiter;
}
public static function setDelimiter($delimiter)
{
self::$_delimiter = $delimiter;
}
public static function match($string, $pattern)
{
preg_match_all(self::_normalize($pattern), $string, $matches, PREG_PATTERN_ORDER);
if(!empty($matches[1]))
{
return $matches[1];
}
if(!empty($matches[0]))
{
return $matches[0];
}
return null;
}
public static function split($string, $pattern, $limit = null)
{
$flags = PREG_SPLIT_NO_EMPTY | PREG_SPLIT_NO_EMPTY;
return preg_split(self::_normalize($pattern), $string, $limit, $flags);
}
}
Мой вопрос: для чего нужен $ _delimiter? какая цель это сервер в функции $ _normalization. Является ли это чем-то связанным с регулярными выражениями, которые я не очень хорошо разбираюсь в других, а затем тот факт, что это шаблон, используемый для сопоставления частей строки.
Книга объяснение следующим образом:
В $ разделителя и _normalize(), все члены для нормализации регулярных строк выражений, так что остальные методы могут работать на них без предварительного проверить или нормализовать их , Методы match() и split() работают аналогично функциям preg_match_all() и preg_split(), но для регулярных выражений требуют меньше формальной структуры и возвращают более предсказуемый набор результатов. Метод match() возвращает первую захваченную подстроку, полное совпадение подстроки или null. Метод split() возвращает результаты вызова функции preg_split() после установки некоторых флагов и нормализации регулярного выражения.
Спасибо за помощь заранее.