1.
类是对象的抽象组织,对象是类的具体存在。
---类是我们对一组对象的描述。
---Php里,每个类的定义都是以关键字class开头,后面跟类名,紧接着一对花括号:
---Class
person{
--------public $name;
--------public $gender;
-----Public function say(){
--------echo $this -> name,’is’,$this ->
gender;
-----}
---}
---产生类的实例:
---$student = new person();
---$student -> name = ‘Tom’;
---$stydent -> gender = ‘male’;
---$student -> say();
2.
类的本身有意义,从抽象到具体的实例化才会有意义:
---1)、类定义了一系列的属性和方法,并提供了实际的操作细节,
-----这些方法可以用来堆属性进行加工。
---2)、对象含有类属性的具体值,这就是类的实例化。
---3)、类与对象的关系类似一种服务与被服务、加工与被加工的关系,
-----具体而言,就如同原材料和流水线的关系。
---类是属性和方法的集合。
3.
对象序列化后,存储的只是对象的属性。
---类是由属性和方法组成的,而对象则是属性的集合,由同一类生成的不同对象,
---拥有各自不同的属性,但共享类的代码空间中方法区域的代码。
---serialize
序列化
---unserialize 反序列化
4.
魔术方法的应用
---魔术方法都是以两个下划线’__’开头。
---1)、__construct 构造方法 主要做的事情就是在创建对象的同时对属性赋值。
---2)、__set和__get方法(针对私有属性进行设置和取值)
------class Account{
--------private $user = 1;
--------private $pwd = 2;
--------public function __set($name,$value){
------------echo “setting $name to $value \r\n”;
------------$this -> $name =
$value;
--------}
---------public function __get($name){
-------------if(!isset($this -> $name)){
----------------echo ‘未设置’;
----------------$this -> $name = ‘正在为你设置默认值’;
-------------}
-------------return $this -> $name;
---------}
------}
-------$a = new Account();
-------echo $a -> user;
-------$a -> name = 5;
-------echo $a -> name;
-------echo $a -> big;
---3)、__call和__callStatic
------__call 防止调用不存在的方法而出错
------------mixed __call( string $name , array $arguments
)
------------$name 参数是要调用的方法名称,$argument参数是一个数组,
---------包含着要传递给方法的参数。
---4)、__toString方法
-------__toString 方法直接打印对象时调用的方法
-------------class Account{\
-----------------public $user = 1;
-----------------public $pwd = 2;
-----------------public function __toString(){
------------------return “用户名是{$this -> user},密码是{$this -> pwd}”;
----------------}
-------------}
-------------$a = new Account();
-------------echo
$a; //调用__toString方法
5.
类的继承和多态
----------继承:
-----------------在继承中parent代指父类,用self代指自身,使用
’ :: ‘ 运算符调用父类方法
-----------------‘ :: ’ 操作符还用来作为类常量和静态方法的调用
-----------继承最大的优点就是扩展简单,但是其缺点大于优点,所以在设计时,需要慎重考
-------虑。该如何使用继承?
-----------1、精心设计专门用于被继承的类,继承树的抽象层应该比较稳定,一般不要多
-------------余三层
------------2、对于不是专门用于被继承的类,禁止其被继承,也就是实用final修饰符。使用------------ final修饰符既可以防止重要方法被非法重写,又能给编辑器寻找优化的机会
------------3、优先考虑用组合关系提高代码的可重用性
------------4、子类是一个特殊的类型,而不只是父类的一个角色
------------5、子类扩展,而不是覆盖或者使父类的功能失效
-------------6、底层代码多用组合,顶层/业务层代码多用继承。底层用组合可以提高效率,-------------避免对象臃肿。顶层代码用继承可以提高灵活性,让业务使用更方便
-----------多态:
-----------1.多态指同一类对象在运行时的具体化
-----------2.php语言是弱类型,实现多态更简单、更灵活
-----------3.类型转换不是多态
-----------4.PHP中父类和子类看作‘继父’和‘继子’,他们存在继承关系,但是不存在血缘
-------------关系
-----------5.多态的本质就是if….else….,值不过实现的层级不同