【问题标题】:How to access a PHP object property outside of a class?如何访问类之外的 PHP 对象属性?
【发布时间】:2014-09-15 13:29:58
【问题描述】:

例如,假设我有包含此代码的文件“other.php”

class Building
{
    public $name;

    function __construct($name)
    {
        $this->$name = $name;
    }
}

$bd = new Building("Name");
echo $bd->$name;

这会返回如下错误:

Notice: Undefined variable: name in (...)
Fatal error: Cannot access empty property in (...)

我希望有这样的输出

Name

如何以这种方式访问​​ PHP 对象属性?谢谢。

【问题讨论】:

    标签: php variables object scope


    【解决方案1】:

    首先修复你的类代码:

    function __construct($name)
    {
        $this->$name = $name;
    }
    

    应该是这样的:

    function __construct($name)
    {
        $this->name = $name;
    }
    

    这将允许您像这样访问它:

    $bd = new Building("Name");
    echo $bd->name;
    

    comment 中解决您的问题

    您收到该错误是因为您尚未实例化该变量。

    你应该这样做:

    $buildings_HSB = new Building("Name");
    echo $buildings_HSB->name;
    

    【讨论】:

      【解决方案2】:

      摆脱第二个$。您可以使用$bd->name; 访问它。课堂内也是如此。把$this->name 代替$this->$name 放在那里。

      一般来说,只是不要-> 运算符之后放置$

      查看PHP Documentation 以供参考。

      【讨论】:

      • 这样做似乎可以消除错误,但没有给我任何输出。 This is my specific code.
      • 课堂内部也是如此。您可以使用$this->$name 访问它,而实际上它应该是$this->name
      • 当我使用 <?php include("buildings.php"); ?> 将该文件包含在我的 index.php 中,然后在我的 index.php 中写入 <?php echo $buildings_HSB->name; ?> 时,它会给出错误。 Notice: Undefined variable: buildings_HSB in (...)Notice: Trying to get property of non-object in (...)
      • 在另一个 HTML 文件中,我正在执行 <?php include("buildings.php"); ?><?php echo $buildings_HSB->name; ?> 并收到上面列出的错误。
      【解决方案3】:

      避免在姓名前使用$ 符号。

      应该是echo $bd->name;..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-09
        • 1970-01-01
        • 2016-12-04
        • 1970-01-01
        • 2012-11-17
        • 1970-01-01
        • 1970-01-01
        • 2020-03-12
        相关资源
        最近更新 更多