我有一个名为Information
的预先存在的对象,其中包含登录/用户信息。我想从另一个班级访问这个。我尝试使用谷歌搜索并寻找年龄......没有运气。为什么Information
对象超出范围?
class foo() {
function display() {
print_r($Information);
}
}
答案 0 :(得分:1)
$由于多种原因,信息可能超出范围。
首先,也许$ Information是全局的,您只需要告诉php 全局关键字:
class foo() {
function display() {
global $Information
print_r($Information);
}
}
第二,也许$ Information是foo实例的一部分?在这种情况下,在php中,您需要“$ this”关键字。
class foo() {
function display() {
print_r($this->Information);
}
}
第三,也许在显示器的调用者中创建了$ Information,而display / foo对它一无所知。
function bar()
{
$Information = new $information;
$a = new Foo();
$a->display();
{
除非您明确地将$ Information传递给显示,或者使其成为每个Foo实例的成员变量,否则显示将无法访问它。 display可以看到(1)全局变量(2)实例变量,(3)要显示的参数,以及(4)显示的本地变量。其他任何东西都不在display()的范围内。
编辑回答您的问题 全球是的我的意思是它最初被定义为全球性的。因为不在特定的功能中,即:
有很多理由可以避免使用全局变量。关于这个话题已经写了很多。这是关于该主题的stackoverflow question。