@IsaevDev

Как же на самом деле работает include/require в PHP?

Как все происходит на самом деле? Какие области видимости? Зависит ли это от вложенности файлов в системе? Зависят ли области видимости от "вложенности" include/require? Влияет ли на include/require .htaccess

Допустим, я с индексной страницы подключаю Config.php, лежащий в ./core
Config.php подключает файлы из core
Потом подключаю с индексной же страницы модули ./customer/index.php или /admin/index.php
И постоянно сталкиваюсь с недоступностью каких-либо переменных, методов и даже классов
Причем логики никакой не прослеживается

Как это все реально работает? Как правильно подключать модули?

UPD 1
Файловая структура:

/root
---index.php
---action.php
---/core
------config.php
------core.php
------utils.php
---/customer
------index.php
------action.php

core/config.php
<?
require_once "core.php";
require_once "utils.php";
?>


core/core.php
<?
require_once "utils.php";
?>


core/utils.php
<?
function prepare_db_val()
{
...
}
?>


index.php
<?
require_once "core/config.php";
if( isset($_GET['act']))
{
   require_once "action.php"; // не работает
   require_once "customer/index.php"; // работает!
}
?>


customer/index.php
<?
if( isset($_GET['act']))
{
   require_once "action.php";
}
?>


action.php, costomer/action.php
<?
$db_q = prepare_db_val($_GET['val']);
?>
  • Вопрос задан
  • 1337 просмотров
Решения вопроса 1
index0h
@index0h
PHP, Golang. https://github.com/index0h
Как все происходит на самом деле?

Представьте, что вместо инструкций include/require будет ваш код))

Какие области видимости?

По умолчанию глобальная. Для остальных - use, либо префикс неймспейса.

Зависит ли это от вложенности файлов в системе?

Нет

Зависят ли области видимости от "вложенности" include/require?

Нет

Влияет ли на include/require .htaccess

Нет

Как это все реально работает?

Это называется autoloading, откройте для себя composer и не изобретайте каменное колесо.

Как правильно подключать модули?

Читаем на тему PSR-4

З.Ы. Не используйте include/require, от слова Совсем, вместо этого require_once.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
revenger
@revenger
49.5
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы