classes/ShortcodeParser.md


Класс ShortcodeParser

Пространство имён: goodboyalex\php_components_pack\models
Версия: 1.0
Доступно с: 1.4

Описание

Класс предназначен для обработки текста на наличие шорткодов и их последующей обработки согласно заданным правилам.

Конструктор

public function __construct(?callable $onError = null)
  • Параметр:
    • $onError — обработчик ошибок (функция fn (string $shortcode, string $errorMessages))

Статические методы

public static function DEFAULT_SET_UNSET(): callable
  • Назначение: возвращает функцию по умолчанию для обработки шорткодов
public static function ANY_VALID(): callable
  • Назначение: возвращает метод проверки валидности шорткода, который всегда возвращает true

Методы работы с шорткодами

public function addShortCode(
    string $name,
    ?callable $onSet = null,
    ?callable $onUnSet = null,
    ?callable $onValidate = null
): void
  • Параметры:
    • $name — имя шорткода
    • $onSet — метод обработки при включении (по умолчанию DEFAULT_SET_UNSET)
    • $onUnSet — метод обработки при удалении (по умолчанию DEFAULT_SET_UNSET)
    • $onValidate — метод валидации (по умолчанию ANY_VALID)
public function addShortCodes(ObjectArray $shortCodes): void
  • Параметр:
    • $shortCodes — массив моделей шорткодов

Метод обработки текста

public function parse(
    string $content,
    bool $ignoreIncluded = false,
    bool $isUnset = false
): string
  • Параметры:
    • $content — текст для обработки
    • $ignoreIncluded — флаг игнорирования вложенных шорткодов
    • $isUnset — флаг удаления шорткода
  • Возвращаемое значение: обработанный текст

Примеры использования

// Создание парсера
$parser = new ShortcodeParser(fn($shortcode, $error) => print_r("[$shortcode] $error"));

// Добавление шорткода
$parser->addShortCode(
    'my-shortcode',
    function($content, $params) {
        // Логика обработки при включении
        return $content;
    },
    function($content, $params) {
        // Логика обработки при отключении
        return $content;
    },
    function($content, $params) {
        // Логика валидации
        return new ActionState(true);
    }
);

// Обработка текста
$result = $parser->parse('[my-shortcode]содержимое[/my-shortcode]');

На главную | Содержание