【发布时间】:2014-10-06 00:33:16
【问题描述】:
我有以下情况。 我有一个没有变量的类,它在其构造函数中错误地将值设置为“不存在”的变量。结果是变量是动态创建的,只要类实例存在,它就是可行的。
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() 函数?
【问题讨论】:
-
哼,不要明白这个。你告诉你的班级 $this->var 等于字符串“variable”,所以当你 var_dump 它告诉你这个班级有一个名为“var”的变量,它等于“variable”......那么问题出在哪里?
-
你有变量并且你在你的构造函数中设置它...
-
@Athafoud:这是标准的 PHP。您可以随时通过为其分配一些东西来创建变量。该 var 是类属性还是“裸”变量都没有关系。
-
@athafoud 这是有意的。您在将创建内部引用的构造函数中使用它。你看到的完全正常
-
@BCartolo 您提到的问题回答了“如何避免它”部分。但不是他们为什么。然而,这是一个很好的见解!
标签: php