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

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

doran7

Новичок
ЩИТО?
Ты уже совсем зарапортовался.
Это, кстати, известная проблема. Называется синдром теоретика.
Какой синдром теоретика!? Я это двадцать раз проверял на практике. Совершенно точно, что включение в переменную типа
$abc = include 'include.php';
не работает, если во включаемом файле не будет прописан
return $output;
Здесь имя итоговой переменной не принципиально, но в $abc попадет именно переменная $output из подключаемого файла, которая присутствует в строке оператора return подключаемого файла.
 

Фанат

oncle terrible
Команда форума
Это работает, дебил.
Просто ты уже вообще ни читать, ни думать не в состоянии.
Ты воображаешь, что include 'include.php'; должно тебе вернуть твой говнофайл.
При этом тебе написали два часа назад, что оно возвращает цифру АДЫН
И это работает.
Ты просто путаешь свои бредовые фантазии с тем что тебе пишут.
 

doran7

Новичок
Ты воображаешь, что include 'include.php'; должно тебе вернуть твой говнофайл.
Я такого не воображаю. Я говорю о том, что при включении в переменную
$abc = include 'include.php';
переменная $abc будет содержать не весь скрипт включаемого файла include.php со всеми его переменными, а только содержимое итоговой переменной $output, которая прописана в строке с оператором return включаемого файла
return $output;

И никакое по умолчанию "return возвращает цифру АДЫН" при этом никакой роли не играет. Не понимаю, почему никто никак не может врубиться в такую простую сермягу, которая работает именно на практике, а не в теории.

PS. Из всего обсуждения следует то, что при
include 'include.php';
по умолчанию работает некий неявный return 1; , т.е. возвращается 1 в качестве индикатора успешного включения файла.
Но при записи в подключаемом файле
$некая_переменная = 'что-то';
return $некая_переменная;
и включении файла в переменную
$abc = include 'include.php';
в переменной $abc будет содержимое $неая_переменная, а не весь скрипт подключаемого файла.
То есть
echo $abc;
в подключающем файле выведет именно
что-то
и ничто иное.

Это, в том числе, я и пытался обсудить с самого начала.
 
Последнее редактирование:

Фанат

oncle terrible
Команда форума
Если бы ты умел читать, я бы ткнул тебя носом в твои же слова.
Но поскольку чердак у тебя набекрень, что-то объяснять тебе стандартными средствами бесполезно.

Окей, будем обращаться как с больным.
У тебя еще какие-то вопросы остались? Что-то беспокоит?
Если нет - иди уже в кроватку, попробуй прийти в себя. Может, крыша на место встанет.
 

doran7

Новичок
У тебя еще какие-то вопросы остались? Что-то беспокоит?
Ничего не беспокоит.
Простой вопрос. Что нужно, чтобы сработала инструкция
$abc = include 'include.php';
в подключающем файле, без использования вариата 2, если, как утверждают корифеи, вариант 1 и вариант 2 "абсолютно одинаковые"?
 

AmdY

Пью пиво
Команда форума
у тебя проблема с облстями видимости, а не include. почитай про global и $GLOBALS. Но лучше так не делать, всё что в include не должно срать в глобальную область видимости.
 

AnrDaemon

Продвинутый новичок
Значит, вариант 2 используют одни идиоты? Но он довольно часто встречается в скриптах, странно.
В _чьих_ скриптах он "довольно часто встречается"?... Мне вот за... ммм... да, пятнадцать лет такое "творчество" не попадалось на глаза.
 

Фанат

oncle terrible
Команда форума
у тебя проблема с облстями видимости, а не include. почитай про global и $GLOBALS. Но лучше так не делать, всё что в include не должно срать в глобальную область видимости.
как раз с областью видимости у него никакой проблемы нет.
проблема у него одна - с головой.
 

AmdY

Пью пиво
Команда форума
AnrDaemon, так много кто подключает конфиги, а в том числе.

Фанат, на сколько я понял он хочет в своём скрипте увидеть переменные из подключенного файла. ой, хотя же они и так будут видны, если код линейный. без всяких return.
return как раз и нужен, чтобы не плодить лишних переменный, этакая анонимная переменная.
 

Фанат

oncle terrible
Команда форума
на сколько я понял он хочет в своём скрипте увидеть переменные из подключенного файла
В самом начале он писал, что наоборот - хочет НЕ видеть.
но поскольку он совсем не дружит с головой и может начать отрицать то, что говорил 5 минут назад, то за его текущее состояние головы я не поручусь.
 

AnrDaemon

Продвинутый новичок
Можно, я потыкаю пациента носом? Ну можно?
Ничего не беспокоит.
Простой вопрос. Что нужно, чтобы сработала инструкция
$abc = include 'include.php';
в подключающем файле, без использования вариата 2, если, как утверждают корифеи, вариант 1 и вариант 2 "абсолютно одинаковые"?
Гражданин пациент, проделайте простой тест.
Сделайте два файла:
in.php
PHP:
<?php

print "Included " . __FILE__ . "\n";

if(defined('RETURN_VALUE'))
  return RETURN_VALUE;
out.php
PHP:
#!/usr/bin/php -f
<?php

$var = include 'in.php';
print "$var\n";

define('RETURN_VALUE', 'Ok');
$var = include 'in.php';
print "$var\n";
chmod +x out.php; ./out.php

И найдите мне 10 отличий в работе инклюда в первом и втором случае.
 

doran7

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

Конкретно, именно эта инструкция
$abc = include 'include.php';
которая как минимум просто удобна, и вместо двух строк
include 'include.php';
и
$abc = $output;
позволяет записать то же самое в одной строке
$abc = include 'include.php';
Но эта последняя строка кода (инструкция) не работает при отсутствии строки
return $output ;
в подключаемом файле. В чем и есть, как минимум, отличие варианта 1 от варианта 2, которое здешние корифеи никак не признают.
 

Фанат

oncle terrible
Команда форума
Ты прав. Отличие есть.
Второй вариант отличается от первого. Тем, что он НЕ РАБОТАЕТ.
что нужно, чтобы сработала именно инструкция
Ничего. Потому что такая конструкция не будет работать в принципе.
Не предусмотрена синтаксисом ПХП.
вместо двух строк
include 'include.php';
и
$abc = $output;
позволяет записать то же самое в одной строке
$abc = include 'include.php';
Если бы у тебя в голове была хоть капля мозгов, ты бы сообразил, что на самом деле строка будет одна:
include 'include.php';
потому что $output у тебя уже есть в вызывающем скрипте, и присваивать её не надо.
Ни $abc = $output; писать не надо. Ни $abc = include 'include.php';
потому что переменная у тебя УЖЕ есть. Ей просто надо воспользоваться.
 

doran7

Новичок
return как раз и нужен, чтобы не плодить лишних переменный, этакая анонимная переменная.
Что-то рациональное проклюнулось, наконец-то. Я-то и хотел выяснить, в том числе, как работает
return некая_переменная;
в подключаемом файле и на что она влияет. То что влияет на кое-что - нет никакого сомнения.
 

Фанат

oncle terrible
Команда форума
AnrDaemon, сорри, я удалил твой ответ.
Ты там напутал, и если наш бедняга его прочтёт, то совсем свихнется, её-богу.
прочти внимательно его опус, там написано "Без применения return $output ; во включаемом файле."
 

doran7

Новичок
Ни $abc = $output; писать не надо. Ни $abc = include 'include.php';
потому что переменная у тебя УЖЕ есть. Ей просто надо воспользоваться.
Нереально воспользоваться, если ничего не писать. Чтобы воспользоваться и вывести, например
echo $abc;
нужно написать или
include 'include.php';
$abc = $output;
или
$abc = include 'include.php';

Ничего. Потому что такая конструкция не будет работать в принципе.
Не предусмотрена синтаксисом ПХП.
Где такое написано, что строка кода
$abc = include 'include.php';
не предусмотрена синтаксисом PHP?
Реально, это интересно прояснить.
 
Последнее редактирование:

Фанат

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