Два варианта включения файла посредством include и return

Статус
В этой теме нельзя размещать новые ответы.

Фанат

oncle terrible
Команда форума
Нереально воспользоваться
Воспользуйся переменной $ouptut, .
Ну, или вместо неё используй в include.php переменную $abc. и она прекрасно будет доступна в вызывающем. Без любых дополнительных телодвижений.
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
AnrDaemon, сорри, я удалил твой ответ.
Ты там напутал, и если наш бедняга его прочтёт, то совсем свихнется, её-богу.
прочти внимательно его опус, там написано "Без применения return $output ; во включаемом файле."
Зря, зря... Я дал нашему пациенту готовый полигон для испытаний его теории. Может, он бы чему-то и научился... а, ты про этот ответ, тогда вообще зря.
IMO, это библия программиста, на любом языке.
 

Фанат

oncle terrible
Команда форума
Зря, зря... Я дал нашему пациенту готовый полигон для испытаний его теории. Может, он бы чему-то и научился...
Не, ну ты написал откровенную лажу.
Я в третий раз процитирую этот кусок его поста:
что нужно, чтобы сработала именно инструкция
$abc = include 'include.php';
во включающем файле? Без применения
return $output ;
во включаемом файле.
И я очень надеюсь, что ты не будешь утверждать, что это будет работать.
 

doran7

Новичок
Умеют здесь уклоняться от нетривиальных вопросов. Я как раз и писал о том, что вариант 1 отличается от вариатна 2 как минимум тем, что инструкция
$abc = include 'include.php';
во включающем файле без применения
return $output ;
во включаемом файле работать не будет.

Тем не менее, вопрос остается открытым. Где такое написано, что строка кода
$abc = include 'include.php';
не предусмотрена синтаксисом PHP?
 

AnrDaemon

Продвинутый новичок
Не, ну ты написал откровенную лажу.
Я в третий раз процитирую этот кусок его поста:

И я очень надеюсь, что ты не будешь утверждать, что это будет работать.
Я этого не собирался утверждать.
Смысл сообщения был в том, что "удобство" кода - вещь субъективная, и никаким образом на первое место не попадает.
Если ты пишешь на каком-то языке, ты в первую очередь должен писать грамотно.
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
Умеют здесь уклоняться от нетривиальных вопросов. Я как раз и писал о том, что вариант 1 отличается от вариатна 2 как минимум тем, что инструкция
$abc = include 'include.php';
во включающем файле без применения
return $output ;
во включаемом файле работать не будет.
На примере, пожалуйста, покажите, что именно не будет работать.
Измените файл in.php как считаете нужным и продемонстрируйте свою мысль.

Тем не менее, вопрос остается открытым. Где такое написано, что строка кода
$abc = include 'include.php';
не предусмотрена синтаксисом PHP?
Предусмотрена. Мы это не отрицаем.
 

doran7

Новичок
А сакральный смысл? Если тебе конфиг нужен, делаешь require_once. Если нет, то не пофигу ли?
Смысл в том, что конфиг, как правило, при подключении нужен весь, или бОльшая его часть. А, например, из скрипта (внешнего файла) цепочки навигации (breadcrumbs) нужна только одна выходная переменная (строка цепочки навигации) без всех промежуточных переменных работы этого скрипта. Про функции говорить не надо, с ними понятно что и как.
Я вот, кроме прочего, пытаюсь выяснить, что в этом плане можно сделать с применением return $нечто в подключаемом файле.
 

AnrDaemon

Продвинутый новичок
Ещё раз, для исключительно туго соображающих пациентов: Если тебе конфиг НУЖЕН, делаешь require_once, и php без твоего участия обвалит систему.
Если нет - include_once и забиваешь на ошибки загрузки файла.
А то что вы там понаписали в ответе, к делу не относится.
 

doran7

Новичок
Предусмотрена. Мы это не отрицаем.
Уже прогресс.

Но если
$abc = include 'include.php';
предусмотрена, то работать она будет только если во включающем файле прописано
return $output ; // или любая другая переменная из включаемого файла вместо нее.
А если не прописана - не будет работать.
По умолчанию, если return $output не прописана, то include будет возвращать 1, а если прописана, то в строке
$abc = include 'include.php';
в $abc запишется именно содержимое той переменной - $output у нас, которая прописана в строке
return $output;
включаемого файла, а не весь скрипт включаемого файла. Это ж легко все проверить на практике. Но при этом все прочие переменные из включаемого файла также будут доступны во включаемом файле, как и выяснилось в самом начале этого поста.

Пока что здесь выясняется что
$abc = include 'include.php';
кроме некоторого удобства синтаксиса и восприятия кода вроде ничего больше и не дает. Но мне такого рода способ включения файла в переменную периодически попадается в разных чужих скриптах. Надо же понимать, для чего и как это используется. Я этот способ и в своих скриптах использую - просто удобно. Цель топика была - детально разобраться, как это работает.
 
Последнее редактирование:

Фанат

oncle terrible
Команда форума
если return $output не прописана, то include будет возвращать 1,
Вот где прогресс-то.
Раньше поциент это отрицал:
если во включаемом файле не поставить строку с return итоговой переменной в явном виде
return $output;
то включение в переменную во включающем файле
$foo = include 'inp.php';
просто не сработает и выдаст ошибку.
Никакой неявный return 1; в данном случае не работает.
Я честно рад, что после нескольких часов безумия ему удалось описать очевидное, не слишком отдаляясь от истины
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху