PHP:访问类中的现有对象

发布于 2024-10-15 05:38:42 字数 226 浏览 4 评论 0原文

我有一个名为 Information 的预先存在的对象,其中包含登录/用户信息。我想从另一个班级访问它。我尝试谷歌搜索并搜索了很长时间......没有运气。为什么Information对象会超出范围?

class foo() {
 function display() {
   print_r($Information);
 }
}

I have a pre-existing object called Information, which contains login/user information. I would like to access this from another class. I tried Googling and searching for ages... no luck. Why would the Information object be out of scope?

class foo() {
 function display() {
   print_r($Information);
 }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

汹涌人海 2024-10-22 05:38:42

由于多种原因,$Information 可能超出范围。

首先,也许 $Information 是全局的,您只需要使用 global 关键字告诉 php:

class foo() {
 function display() {
   global $Information
   print_r($Information);
 }
}

其次,也许 $Information 是 foo 实例的一部分?在这种情况下,在 php 中,您需要“$this”关键字。

class foo() {
 function display() {       
   print_r($this->Information);
 }
}

第三,也许 $Information 是在 display 的调用者中创建的,而 display/foo 对它一无所知。

function bar() 
{
   $Information = new $information;
   $a = new Foo();
   $a->display();
{

除非您明确地将 $Information 传递给 display,或者将其作为每个 Foo 实例的成员变量,否则 display 将无法访问它。显示可以看到(1)全局变量(2)实例变量,(3)要显示的参数,(4)要显示的局部变量。没有其他内容属于 display() 的范围。

编辑以回答您的问题
是的,我所说的“全球”是指它最初被定义为“全球”。因为不在特定函数内,即:

有很多理由避免使用全局变量。关于这个主题已经写了很多文章。这是关于该主题的 stackoverflow 问题

$Information could be out of scope for many reasons.

First, maybe $Information is global and you just need to tell php with the global keyword:

class foo() {
 function display() {
   global $Information
   print_r($Information);
 }
}

Second, maybe $Information is part of the foo instance? In this case, in php, you need the "$this" keyword.

class foo() {
 function display() {       
   print_r($this->Information);
 }
}

Third, maybe $Information was created in the caller of display and display/foo simply know nothing about it.

function bar() 
{
   $Information = new $information;
   $a = new Foo();
   $a->display();
{

Unless you explicitely pass $Information to display, or make it a member variable of each Foo instance, display won't be able to access it. display can see (1) global variables (2) instance variables, (3) parameters to display, and (4) variables local to display. Nothing else is within the scope of display().

Edits to answer your questions
Yes by global I mean it was initially defined as global. As in not within a specific function ie:

There's plenty of reasons to avoid globals. Plenty has been written on the topic. Here's a stackoverflow question on the topic.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文