【问题标题】:How to use the global variable to initialize the class property?如何使用全局变量来初始化类属性?
【发布时间】:2018-06-25 11:17:38
【问题描述】:

我使用的是 PHP 7.2.6

我知道“在函数外部声明的变量具有GLOBAL SCOPE,并且只能在函数外部访问”。

我想将已经声明的全局变量放入我的类中。

我想用这个全局变量初始化类属性。

为此,我尝试了以下代码

<?php
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;

class foo
{
    var $foo;

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

$foo = new foo();
echo $foo->foo;
?>

我在浏览器中收到以下通知:

Notice: Undefined variable: str in hello.php on line 14

我不明白为什么我会收到此通知。

我没有在任何函数中访问全局变量$str。我在课堂上使用它。

请在这方面帮助我并解释我应该如何使用全局变量来初始化类属性?

【问题讨论】:

  • 您是否知道,自 PHP 5.0 发布(即 2004 年左右)以来,var 关键字不应该在类语法中使用?另外,你为什么不在构造函数中将值作为依赖项传递?
  • “在函数外部声明的变量具有全局范围,只能在函数外部访问” - 不正确。
  • @Progrock : 此声明来​​自 w3schools PHP 教程 URL : w3schools.com/php/php_variables.asp
  • 很高兴您提供参考。选词不当。如您所见,借助 global 关键字,您可以在函数内访问全局范围内的变量。

标签: php class global-variables


【解决方案1】:

要访问全局变量,您需要使用带有global 关键字的全局变量,其次,您的修饰符和类共享相同的名称,afaik 会混淆编译器,请参见下面的 sn-p

不会的

   <?php

$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;

class foo
{
    public  $foo;

    function __construct()
    {
        global $str;
        $this->foo = $str;
    }


}

$foo = new foo();
echo $foo->foo;
?>

Snippet

Why not to use global variables

【讨论】:

    猜你喜欢
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    相关资源
    最近更新 更多