php 类 多态,php类,魔术方法,继承和多态

论坛 期权论坛 脚本     
已经匿名di用户   2022-5-29 19:29   1034   0

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….,值不过实现的层级不同

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP