【发布时间】:2011-02-27 19:48:07
【问题描述】:
今天我尝试包含返回对象的文件。我总是使用 require_once,但是现在我注意到它的奇怪行为。
文件 main.php
$lang = false;
$lang->name = "eng";
$lang->author = "Misiur";
$lang->text = "Text is test";
$lang->undefined = "Undefined";
return $lang;
文件索引.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 更安全,因为它不会重复包含。
谢谢。
编辑:
但是当我使用 only require_once 时,我也会得到 bool(true)。所以 require_once 只返回包含的结果,而不是它的内容?
编辑2:
哈哈。我没有注意到,早些时候我在我的类中需要这个文件,该文件是在这段代码执行之前创建的 ($this->file = require_once("langs/$name/main.php");)
所以 require_once 正常工作。谢谢大家!
【问题讨论】:
-
你为什么要使用
return?摆脱它 -
没有它我没有 $lang 对象内容,只需要结果
-
天啊,别傻了。只是摆脱回报!不要使用它。
标签: php object include require require-once