Почему так с include_once?

файл 1 код1:

public function actionIndex()
{
   $newsList = array();
   $newsList = News::getNewsList();
   
   require_once(ROOT . '/views/newss/index.php');
   
  return true;
}

файл /views/newss/index.php код 1

<?php foreach ($newsList as $newsItem): ?>
<div class="post">
<?php echo $newsItem['content'];?>
</div>
<?php endforeach;?>

После вызова actionIndex открывается страница со списком из $newsList
Я так понимаю include_once раз подключает index.php и с файл1 получаем доступ к данным файл2.
Но как тогда файл2 “видит” $newsList? include_once двунаправленное действие и данные стают обоюдно видимыми?

Ну это ж не С, файлы не компилируются отдельно, тут оно как бы тупо вставило код и выполнило в этом контексте.

А как-то перефразировать ответ? ничего не понял :frowning:

Тут можно представить, что код просто превратился в

   $newsList = array();
   $newsList = News::getNewsList();

   foreach ($newsList as $newsItem): ?>
   <div class="post">
   <?php echo $newsItem['content'];?>
   </div>
   <?php endforeach;
   
   return true;

Только тут два раза не получится вызвать функцию )
Причем даже не выдаст ошибку.

<?php

function sayHi(string $name): void
{
  echo 'in sayHi' . PHP_EOL;
  require_once 'inc.php';
}

sayHi('Vasya');
sayHi('Petya');
sayHi('Dasha');
<?php

echo "Hi, $name\n";