继续之前的视频教学,对php的理解也有了进一步的认识。其实php也是面向对象的,何为面向对象首先得有个对比物才行-------面向过程。
那么问题来了,什么是面向对象,什么又是面向过程呢?这两个抽象的概念对于新手来说不是很好理解,还好的是我已经工作好几年了,算是职场老人了。我也把这个问题问了个旁边新员工,根据他的反馈,觉得他还是没有理解面向对象和面向过程的概念。所以,我就跟他打了个比喻,面向过程就好比做一件事情,要按照步骤一步一步执行,就像自个儿做饭的顺序,而面向对象就好比把一样菜进行分工,交给不同的人也就是对象来做,它们做这道菜的其中之一的工序,最后做好这道菜。
php面向对象不可避免就有对象和类,属性与方法。在学习值传递和引用传递这一章节中,我加深了对它们的理解:
class abc {
var $ss = 10;
}
$stu02 = new abc();
$stu03 = $stu02;
$stu02->ss = 15;
echo "stu02->ss is " . $stu02->ss . " stu03->ss is " . $stu03->ss;
echo "<hr>";
页面显示:
$stu04 = new abc();
$stu05 = & $stu04; //这是引用传递
$stu04->ss = 88;
echo "stu04->ss is " . $stu04->ss . " stu05->ss is " . $stu05->ss;
页面显示:
由此可知,不管是只传递还是引用传递,只要对象的一个值变了另一个值也跟着变。我刚开始也不能理解,因为之前一直是做java开发的,对象的引用赋值,得到的另一个对象跟之前的是两个完全不同的对象,怎么可能到最后值也跟着变呢,其实这里的引用只是指向对象的引用名而非对象实体 ,好比 $stu04 -----> 对象引用名 ------->对象实体
所以对象引用名的值该变,也跟着变。
php创建一个对象有三种方式 : 1、 $obj1 = new cls(); $obj2 = new cls(); 第一种我就不讲了,一看很明了 2、 这种方式是实例化原先类的实例名 $obj1 = new cls();
$obj2 = new obj1(); 3、class cls{...........} $obj3 = "cls";
类的成员有以下三个成员组成,属性,方法,常量。
属性分成:实例化属性与静态属性 。方法也有两种: 实例化方法与静态方法。静态属性与方法都可以通过类名直接调用,实例化方法不可以调用静态属性。