面向对象
程序分为两种,一种是面向过程的,另一种是面向对象的。之前的学的都是面向过程的,按部就班的一步一步的按照顺序往下走。
面向对象:
1.什么叫做对象
一切皆为对象(一个对象由一组属性和有权对这些属性进行操作的一组服务的封装体)。
2.什么叫做类
类是具有相同属性和服务的一组对象的集合。
做类
class Ren//关键字class,是用来定义类的,class后面跟类名,类名的首字母一般要大写,后面跟{}。 { //变量和方法来描述人类的特征 //成员变量 public $name = "张三"; private $sex = "男"; //成员方法 public function Speak()//成员方法一般是public,默认的也是public。 { echo "正在讲话"; } } //访问修饰符 //public代表公有的,在任何地方都可以访问的。 //protected 受保护的,只能在该类或该类的子类中访问。 //private代表私有的,只能在该类中访问。 $r = new Ren();//实例化对象,代表从类中生成一个对象。 //var_dump($r);//出现的结果中有object,代表对象。
echo $r->name;//如果赋值就在后面加上值,如果取值就可以直接取值。
$r->name="李四";//赋值。其它语言用的是.,php用的是->。 var_dump($r);
//构造方法
class Ren { public $name; public $sex; //构造方法 //function Ren($n)//构造方法的名称就是类名,要和类名一致。 function __construct($n)//更高的版统一用本用__constract($n)构造,双下划线,不再用上面的写法。 { //注意不能直接写$sex=$n,因为sex是属于类的,是抽象的,虚拟的。而对象里面的sex是具体的,赋值要对具体对象赋值。 //this关键字,在类里面代表该对象。 $this->sex = $n; } public function Speak() { echo "正在讲话"; } } $r = new Ren("男"); //构造方法,始终存在,如果不写也是存在的。 var_dump($r);
构造方法有两个特殊点:
1.写法特殊
2.执行事件特殊,执行时间是在$r = new Ren();的时候就执行。
研究类的时候,首先要看类的构造方法,因为如果使用这个类就要造对象,造对象时就会用到构造方法。看构造需不需要传参数,如果需要传参数,就写一个参数传过去把对象造出来。
析构方法:__destruct
析构方法是在对象释放的时候执行,函数用完以后不再用了,就要从内存中释放,也是自动调用。
__tostring:可以用来输出对象
里面要有一个return
function __tostring() { echo"这个类是人类"; }