初学PHP,之前由C++转来,所以对于PHP里面的面向对象压力很大。
这里贴点自己的体会,希望有同样经历的人可以在此得到帮助。
PHP类中的属性如何在类方法中引用?
class myClass
{
protected $myData;
public function __construct()
{
$this->myData = 'my test data';
}
public function Display()
{
echo $this->myData;
}
}
Display这段蛋疼的代码我改了N久,先是使用$myData,提示使用未定义变量。
然后改为this->$myData报错。
再然后使用$this->$myData继续报错。
最终改为现在的形式。
总结下,由于是动态语言,所以可能函数内部使用$myData,PHP认为是你自己又定义一个变量。
引用对象的成员变量,须使用$this关键字引用,但myData作为一个属性,前面又不需要加'$',挺蛋疼的规定和语法。
其他语言转过来的程序员们需要注意了。
PHP中的对象数组。
由于我的需求中需要将一个HTML Parse出来的东西存入到数据库。为方便起见,我将Parse出来的数据写了一个Data类。
但是这些数据具有相同格式,也就是说,我需要将Data类的对象存放于一个Data数组。
查了半天PHP Manual,翻出来一个ArrayObject的类,比较好用。
也很简单,举例如下。
$arrayObj = new ArrayObject();
$myObj1 = new myClass();
$myObj2 = new myClass();
$myObj1->myData = 'test1';
$myObj2->myData = 'test2';
//add item to arrayObj;
$arrayObj->append($myObj1);
$arrayObj->append($myObj2);
//output
foreach($arrayObj as $item)
{
echo $item->myData;
}
当然ArrayObject还有其他的方法,可以去看接口声明或者PHP Manual。