Рейтинг:1

Как получить значение Markup::$string?

флаг kz

У меня есть следующий код в пользовательском обработчике отправки:

$status = \Drupal::messenger()->messagesByType('status');
foreach ($статус как $дельта) {
   // Здесь я хочу извлечь текстовую строку из $delta.
}

Переменная $дельта теперь содержит это:

delta => Объект stdClass
(
    [__CLASS__] => Друпал\Ядро\Визуализация\Разметка
    [string:protected] => Запрос статьи Моя статья создана.
)

Как получить защищенную строку из $дельта?

Я уже пробовал некоторые методы, но пока не нашел ни одного работающего.

Вот те, которые пробовали до сих пор:

Ошибка: вызов неопределенного метода Drupal\Core\Render\Markup::getMessages()
Ошибка: вызов неопределенного метода Drupal\Core\Render\Markup::toString()

Рейтинг:4
флаг in

Защищенная переменная доступна только из самого класса. Ваш единственный вариант получить к нему доступ извне класса — через общедоступный метод.

Глядя на Разметка класс, единственными общедоступными методами являются:

  1. считать()
  2. jsonSerialize ()
  3. __нанизывать()

Проще говоря, потому что в разметке реализован магический метод __нанизывать() (который возвращает $это->строка), вы можете получить эту строку, просто используя объект как строку, например. эхо $my_markup_object;

Free Radical avatar
флаг kz
Спасибо! не знал о магических методах PHP.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.