Сегодня я попытался включить файл, который возвращает объект. Я всегда использую require_once, но теперь я заметил странное поведение.Включите, require & require_once
main.php Файл
$lang = false;
$lang->name = "eng";
$lang->author = "Misiur";
$lang->text = "Text is test";
$lang->undefined = "Undefined";
return $lang;
index.php Файл
$lang = include('langs/eng/main.php');
var_dump($lang);
echo "<br />";
$lang = require('langs/eng/main.php');
var_dump($lang);
echo "<br />";
$lang = require_once('langs/eng/main.php');
var_dump($lang);
Результат
object(stdClass)#9 (4) { ["name"]=> string(3) "eng" ["author"]=> string(6) "Misiur" ["text"]=> string(12) "Text is test" ["undefined"]=> string(9) "Undefined" }
object(stdClass)#10 (4) { ["name"]=> string(3) "eng" ["author"]=> string(6) "Misiur" ["text"]=> string(12) "Text is test" ["undefined"]=> string(9) "Undefined" }
bool(true)
Почему это так? Я думал, что require и require_once - это одно и то же, только require_once более безопасен, потому что он не будет дублировать include.
Спасибо.
Edit:
Но когда я использую только require_once, я получаю логическое значение (истина) тоже. Так require_once возвращает только результат include, а не контент?
Редакция 2:
LOL. Я не заметил, что раньше мне нужен этот файл внутри моего класса, который был создан до этого выполнения кода ($ this-> file = require_once ("langs/$ name/main.php");)
Поэтому require_once работал так, как должен. Спасибо, парни!
Почему вы используете 'return' вообще? избавиться от него –
без него У меня нет объектного объекта $ lang, требуется только результат – Misiur
OMG не глупый. просто избавиться от возвращения! Не используйте его. –