PHP中类和对象
面向对象中的基本概念
类和对象
对象: 万物皆对象;
类: 任何对象,都可以人为“规定”为某种类型(类别);
class Person{
var $name ;
var $age;
var $edu;
}
我:
姓名:罗XX,
年龄40,
学历:大学;
王亮:
姓名:王亮
年龄:20;
学历:大学;
class Teacher{
var $name ;
var $age;
var $edu;
var $major; //专业
}
举例:
//定义一个"人类"(Person类) class Person{ var $name; //一个特征,其实就是"变量" var $age; //一个特征,其实就是"变量" var $edu; //一个特征,其实就是"变量" } //创建一个新的Person类的对象,并"放入"变量$obj1中(其实就是赋值) $obj1 = new Person(); $obj1->name = '张三'; //符号"->"就是表示指代对象中的某个"特征",这里是给该特征赋值; $obj1->age = 18; //"->"相当于js中的"."符号,比如d1.style.color = "red"; $obj1->edu = '大学'; echo "
"; var_dump($obj1); echo "/pre";
显示结果为:
object(Person)#1 (3) { ["name"]=> string(6) "张三" ["age"]=> int(18) ["edu"]=> string(6) "大学" }
又创建了一个对象:
//又创建了一个对象: $obj2 = new Person(); $obj2->name = "李四"; $obj2->age = 22; $obj2->edu = "高中"; echo "
"; var_dump($obj2); echo "";然后再显示为:
object(Person)#1 (3) { ["name"]=> string(6) "张三" ["age"]=> int(18) ["edu"]=> string(6) "大学" } object(Person)#2 (3) { ["name"]=> string(6) "李四" ["age"]=> int(22) ["edu"]=> string(6) "高中" }
可见:
类是描述一类事物的一个总称,是具有相同特征特性的该类事物的一个通用名字(称呼);
对象是一个明确的具体的"物体",是某个类中的一个“实物”(相对来说,类就是一种抽象的泛称)。对象离不开类,或者说,对象一定隶属于某个类——有类才有对象,先有类再有对象。
属性和方法
原来的做法(面向过程):
<?php $name = "小花"; $age = 18; $edu = "大学"; function wash($n, $a, $e){ echo "
{$a}岁的{$e}学历的{$n}在勤快地洗衣服"; } function meal($n, $a, $e){ echo "
{$a}岁的{$e}学历的{$n}在快乐地做饭"; } wash($name, $age, $edu); meal($name, $age, $edu); ?>现在的做法(面向对象):
<?php class MyDreamGirl{ var $name = "小花"; //此时他叫做"属性"了(原来是变量的) var $age = 18; var $edu = "大学"; //此时,他叫做"方法"了(原来是函数); function wash(){ echo "
{$this->age}岁的{$this->edu}学历的{$this->name}在勤快地洗衣服"; } function meal(){ echo "
{$this->age}岁的{$this->edu}学历的{$this->name}在快乐地做饭"; } } $obj1 = new MyDreamGirl(); $obj1->wash(); $obj1->meal(); ?>可见:
属性:就是原来的“变量”,只是现在它“隶属于”一个类了,即写在一个类中,就称为属性;
方法:就是原来的“函数”,只是现在它“隶属于”一个类了,即写在一个类中,就称为方法;
注意:属性和方法,已经不能“自由使用”了,而是都要通过这个类或这个类的对象去使用。
使用属性,就把它当做一个“变量”去使用就好了,只是需要该形式:对象->属性名;
使用方法,就把它当做一个“函数”去使用就好了,只是需要该形式:对象->函数名(实参列表...)
<?php class MyDreamGirl{ function GetPingfanghe($x, $y){ $result = $x*$x + $y*$y; return $result; } } $obj2 = new MyDreamGirl(); $v1 = $obj2->GetPingfanghe(3,4); echo "
v1 = $v1"; ?>结果为:
v1 = 25