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

  • Автор темы Автор темы doran7
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.
ЩИТО?
Ты уже совсем зарапортовался.
Это, кстати, известная проблема. Называется синдром теоретика.
Какой синдром теоретика!? Я это двадцать раз проверял на практике. Совершенно точно, что включение в переменную типа
$abc = include 'include.php';
не работает, если во включаемом файле не будет прописан
return $output;
Здесь имя итоговой переменной не принципиально, но в $abc попадет именно переменная $output из подключаемого файла, которая присутствует в строке оператора return подключаемого файла.
 
Это работает, дебил.
Просто ты уже вообще ни читать, ни думать не в состоянии.
Ты воображаешь, что include 'include.php'; должно тебе вернуть твой говнофайл.
При этом тебе написали два часа назад, что оно возвращает цифру АДЫН
И это работает.
Ты просто путаешь свои бредовые фантазии с тем что тебе пишут.
 
Ты воображаешь, что 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;
в подключающем файле выведет именно
что-то
и ничто иное.

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

Окей, будем обращаться как с больным.
У тебя еще какие-то вопросы остались? Что-то беспокоит?
Если нет - иди уже в кроватку, попробуй прийти в себя. Может, крыша на место встанет.
 
У тебя еще какие-то вопросы остались? Что-то беспокоит?
Ничего не беспокоит.
Простой вопрос. Что нужно, чтобы сработала инструкция
$abc = include 'include.php';
в подключающем файле, без использования вариата 2, если, как утверждают корифеи, вариант 1 и вариант 2 "абсолютно одинаковые"?
 
у тебя проблема с облстями видимости, а не include. почитай про global и $GLOBALS. Но лучше так не делать, всё что в include не должно срать в глобальную область видимости.
 
Значит, вариант 2 используют одни идиоты? Но он довольно часто встречается в скриптах, странно.
В _чьих_ скриптах он "довольно часто встречается"?... Мне вот за... ммм... да, пятнадцать лет такое "творчество" не попадалось на глаза.
 
у тебя проблема с облстями видимости, а не include. почитай про global и $GLOBALS. Но лучше так не делать, всё что в include не должно срать в глобальную область видимости.
как раз с областью видимости у него никакой проблемы нет.
проблема у него одна - с головой.
 
AnrDaemon, так много кто подключает конфиги, а в том числе.

Фанат, на сколько я понял он хочет в своём скрипте увидеть переменные из подключенного файла. ой, хотя же они и так будут видны, если код линейный. без всяких return.
return как раз и нужен, чтобы не плодить лишних переменный, этакая анонимная переменная.
 
на сколько я понял он хочет в своём скрипте увидеть переменные из подключенного файла
В самом начале он писал, что наоборот - хочет НЕ видеть.
но поскольку он совсем не дружит с головой и может начать отрицать то, что говорил 5 минут назад, то за его текущее состояние головы я не поручусь.
 
Можно, я потыкаю пациента носом? Ну можно?
Ничего не беспокоит.
Простой вопрос. Что нужно, чтобы сработала инструкция
$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 отличий в работе инклюда в первом и втором случае.
 
Естественно, это работает. т.к. $output, как и все переменные включаемого файла, доступна во включающем файле после строки включения. Но это не ответ на мой вопрос. Мой вопрос был - что нужно, чтобы сработала именно инструкция
$abc = include 'include.php';
во включающем файле? Без применения
return $output ;
во включаемом файле.

Конкретно, именно эта инструкция
$abc = include 'include.php';
которая как минимум просто удобна, и вместо двух строк
include 'include.php';
и
$abc = $output;
позволяет записать то же самое в одной строке
$abc = include 'include.php';
Но эта последняя строка кода (инструкция) не работает при отсутствии строки
return $output ;
в подключаемом файле. В чем и есть, как минимум, отличие варианта 1 от варианта 2, которое здешние корифеи никак не признают.
 
Ты прав. Отличие есть.
Второй вариант отличается от первого. Тем, что он НЕ РАБОТАЕТ.
что нужно, чтобы сработала именно инструкция
Ничего. Потому что такая конструкция не будет работать в принципе.
Не предусмотрена синтаксисом ПХП.
вместо двух строк
include 'include.php';
и
$abc = $output;
позволяет записать то же самое в одной строке
$abc = include 'include.php';
Если бы у тебя в голове была хоть капля мозгов, ты бы сообразил, что на самом деле строка будет одна:
include 'include.php';
потому что $output у тебя уже есть в вызывающем скрипте, и присваивать её не надо.
Ни $abc = $output; писать не надо. Ни $abc = include 'include.php';
потому что переменная у тебя УЖЕ есть. Ей просто надо воспользоваться.
 
return как раз и нужен, чтобы не плодить лишних переменный, этакая анонимная переменная.
Что-то рациональное проклюнулось, наконец-то. Я-то и хотел выяснить, в том числе, как работает
return некая_переменная;
в подключаемом файле и на что она влияет. То что влияет на кое-что - нет никакого сомнения.
 
AnrDaemon, сорри, я удалил твой ответ.
Ты там напутал, и если наш бедняга его прочтёт, то совсем свихнется, её-богу.
прочти внимательно его опус, там написано "Без применения return $output ; во включаемом файле."
 
Ни $abc = $output; писать не надо. Ни $abc = include 'include.php';
потому что переменная у тебя УЖЕ есть. Ей просто надо воспользоваться.
Нереально воспользоваться, если ничего не писать. Чтобы воспользоваться и вывести, например
echo $abc;
нужно написать или
include 'include.php';
$abc = $output;
или
$abc = include 'include.php';

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