如何使用全局变量初始化class属性?

时间:2018-06-25 11:17:38

标签: php class global-variables

我正在使用PHP 7.2.6

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

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

我想使用此全局变量初始化class属性。

为此,我尝试了以下代码

1! = 1
2! = 2
3! = 6
4! = 2 4
5! = 1 2 0
6! = 7 2 0
7! = 5 0 4 0
8! = 4 0 3 2 0
9! = 3 6 2 8 8 0
10! = 3 6 2 8 8 0 0
11! = 3 9 9 1 6 8 0 0
12! = 4 7 9 0 0 1 6 0 0
13! = 6 2 2 7 0 2 0 8 0 0
14! = 8 7 1 7 8 2 9 1 2 0 0
15! = 1 3 0 7 6 7 4 3 6 8 0 0 0
16! = 2 0 9 2 2 7 8 9 8 8 8 0 0 0
17! = 3 5 5 6 8 7 4 2 8 0 9 6 0 0 0
18! = 6 4 0 2 3 7 3 7 0 5 7 2 8 0 0 0
19! = 1 2 1 6 4 5 1 0 0 4 0 8 8 3 2 0 0 0
20! = 2 4 3 2 9 0 2 0 0 8 1 7 6 6 4 0 0 0 0

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

<?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 。我在课堂上使用它。

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

1 个答案:

答案 0 :(得分:1)

要访问全局变量,您需要使用带有global关键字的全局变量,其次,您的修饰符和类使用相同的名称,而afaik会使编译器感到困惑,请参见下面的代码片段 < / 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