AleksandrH
(AleksandrH.)
04.Декабрь.2020 09:51:05
#1
файл 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 двунаправленное действие и данные стают обоюдно видимыми?
AlexP
(Alex P.)
04.Декабрь.2020 09:55:16
#2
Ну это ж не С, файлы не компилируются отдельно, тут оно как бы тупо вставило код и выполнило в этом контексте.
AleksandrH
(AleksandrH.)
04.Декабрь.2020 09:56:54
#3
А как-то перефразировать ответ? ничего не понял
AlexP
(Alex P.)
04.Декабрь.2020 09:59:06
#4
Тут можно представить, что код просто превратился в
$newsList = array();
$newsList = News::getNewsList();
foreach ($newsList as $newsItem): ?>
<div class="post">
<?php echo $newsItem['content'];?>
</div>
<?php endforeach;
return true;
AlexP
(Alex P.)
04.Декабрь.2020 10:23:50
#5
Только тут два раза не получится вызвать функцию )
Причем даже не выдаст ошибку.
<?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";