这段代码的输出是:8。
这就说明了一个未定义的属性,是可以在类中正常使用的。这是因为:

在类中使用$this-> 调用一个未定义的属性时,PHP5会自动创建一个属性供使用。
这个被创建的属性,默认的方法权限是public。

之所以说是挖坑,是当程序中加入了__set()魔术方法后,就不能使用这么使用了。

class test_class{ public function __set($property, $value) { public function out(){ $this->test = 8; return $this->test; $obj = new test_class(); echo $obj->out();

这个代码的输出:PHP Notice: Undefined property: test_class::$test,然而也没有输出。

在 $this->test = 8;这行代码时,程序发现存在魔术方法__set(),就去调用这个魔术方法而不会自动创建,但不巧的是你的__set()里面什么都没有干,这个属性就没有被创建。在后面使用的时候就当然会出错了。

所以属性最后先定义,或者在__set()上定义它。

一般情况下,在类中要使用一个属性,最好是先申明这个属性。否则就是给自己的挖坑了。 先来看以下一段代码,<?phpclass test_class{ public function out(){ $this->test = 8; return $this->test; }}$obj = new test_class();echo $obj->o
1. 变量名前后写错:比如,前面写a, 后面又写a1 2. 出现,变量名,全局中都找不到,和情况一类似 3. 在一个函数里面申明了var a,但是我在全局里面调用a,这个a不在函数里面 其实,1,2,3的情况均属于同一种情况 最终极思考的情况时,由于某些属性或者是方法,遇到浏览器的兼容性问题,也可能会出现类似的情况
In a JavaScript program, the correct way to check if an object property is undefined is to use the typeof operator. 在JavaScript程序中,检查对象属性是否未定义的正确方法是使用typeof运算符。 typeof returns a string that tells t...
注:本博文仅针对struct到double类型的转换 1.这种情况为运算符(不管是*,+,-,/)两边的参数或者变量类型不一致,多数情况是一边是struct类型,一边是double类型。此时可以使用struct2array函数将struct转化为double型。 2.另外值得注意的是这种情况多发生在load " .mat"文件时发生。load出的mat文件一般为struct类型(可以使用class()函数查看变量类型),可以用下图方法直接在load时转换变量类型。 网上一搜索,一种常见的解决方法是: 一、在matlab的command里输入: restoredefaultpath;matlabrc. 回车; 二、建一个名为“pathdef.m”的文件复制到在matlab的安装目录/toolbox/local下; 三、在matlab的command里输入“sav
下面是使用simulink过程中出现的警告及解决方法,特此记录。 1,警告: You have required continuous-time simulation of a system containing switches or nonlinear elements. The ode23tb variable-step stiff solver with relative tolerance set to 1e-4 generally gives best accuracy and simula.