在PHP中飞行变量创建

时间:2014-08-12 19:42:54

标签: php

我有以下情况。 我有一个没有变量的类,它在构造函数中错误地将值设置为“不存在”的变量。结果是变量是动态创建的,只要类实例存在就可行。

myClass.php

class myClass {
    public function __construct($var)
    {
        $this->var = $var;
    }

    public function printVar() {
        echo $this->var. "</br>";
    }
} 

tester.php

include("myClass.php");

$myClass = new myClass("variable");
$myClass->printVar();

var_dump($myClass);

当我运行tester.php时,输出是以下

variable
object(myClass)#1 (1) { ["var"]=> string(8) "variable" } 

有谁知道为什么会这样?你能指点我解释这种行为的任何文档引理吗?

是否可以避免像__set()函数重载这样的东西?

2 个答案:

答案 0 :(得分:0)

这是因为php在为其赋值之前不必强制声明。但是你应该总是在类中声明变量,因为它增加了代码的可读性,并且你可以指定变量的可访问性是公共的还是私有的。

答案 1 :(得分:-3)

如果您正在考虑根据您传递的字符串动态创建变量,您可能需要检查$$变量,是的,两次&#39; $&#39;如果我这次正确地解决了你的问题