Используя $this -> в ob_get_contents(); возвращает массив вместо строки

#php #arrays

Вопрос:

Я использую ob_get_contents(); для загрузки темы, в которой мне нравится использовать $this -gt; страницы. Если я напечатаю $this -gt; страницы в функции, она вернет строку проппера. Но если я вставлю его в свой файл темы, он вернет массив emtpy. У кого-нибудь есть идеи, почему это происходит? Вот мой код:

  public function getContentDisplay($theme_derivative, $search_key) {   ob_start();  include('./themes/myfolder/theme.php');  $replace = ob_get_contents();  ob_end_clean(); ...    //theme.php:  lt;section class="col-12 col-sm-12 col-md-9 lucaSectionContent"gt;  lt;%my_content_hauptbereich%gt;   lt;?php var_dump($this -gt; pages); ?gt; //return an empty array  lt;/sectiongt;  //content function:  $pages = "lt;a href="?id=".$this -gt; main_id."amp;offset=".$previous_offset ."".$limit."" ";   $pages .= " title="".$the_page_info."" ";   $pages .= "gt;".$page_count."lt;/agt;";     $this -gt; pages = $pages;   

Комментарии:

1. Можете ли вы поделиться кодом, который работает, а не только его частями? Что означает $this ссылка?

2. Я обнаружил, что это не имеет ничего общего с ob_get_contents();

3. Затем, пожалуйста, добавьте все разъяснения к вашему вопросу, отредактировав его

Ответ №1:

Ключевое $this слово может использоваться только в рамках метода для ссылки на текущий объект. Включенные файлы наследуют локальные переменные, но не $this .

Если вам нужен объект, сначала назначьте его локальной переменной (например $object = $this ), а затем используйте переменную.