没有系统的学过php,对它的语法也就不甚了解。得益于c系列的语法大致相同,一直也没碰到什么大的问题,但这次却因为一个基本语法折腾了半天。
不知道从第几版开始,php引入了面向对象。前两天想把几个功能封装成一个对象,结果在调用的时候出了错,错误日志提示 “PHP Notice: Undefined variable”。
类定义
1 | class A{ |
调用就不写了,开始没注意到这里,一直在别的地方找原因,最后才定位到这,仔细检查,没什么问题啊。最后经过漫长的折磨,终于找到原因。
正确的的类定义应该这么写
1 | class A{ |
首先,访问类内成员必须要加this修饰,其次访问类内成员没有$。
原因如下:
php系解释型语言,由于以前没有oop,所以以“$”开头的会被认为是对象,解释时用value替换掉,所以在oop中会解释变成“类变量->常量”,这显然不存在该成员,所以访问类成员变量时不需要也不可以添加“$”符号。另外访问类成员必须加this修饰,否则会被认为是局部变量。
php是一门灵活的语言,但是再灵活,也会有一些不够灵活的地方,还是要系统的学一学呀,凡事不能想当然。