#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
), а затем используйте переменную.