微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP类相关知识点实例总结

本文实例总结了PHP类相关知识点。分享给大家供大家参考,具体如下:

最终类与最终方法

如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。

rush:PHP;"> final class a{} class a{ final public function A(){} }

抽象类与抽象方法

rush:PHP;"> abstract class a { public abstract function func(); } class A extends a{ public function func(){} }

一个类可以使用abstract声明为抽象类;抽象类是不能实例化的类,只用作其他类的父类

rush:PHP;"> abstract class name{}

一个方法可以使用abstract声明为抽象方法;抽象方法只需要声明方法头,不需要大括号部分的方法体。

rush:PHP;"> abstract public function name($val);

一个类中有抽象方法,则该类必须声明为抽象类。

一个抽象类,则子类不行实现父类中的所有抽象方法,除非子类也继续作为抽象类。

父类的方法时,访问控制符范围不能降低,且方法的参数也必须一致(重写)。

接口

接口可以看作是抽象类的更高层面的抽象,可以说是抽象类的特例

rush:PHP;"> interface a{ function func(); } class A implements a { function func(){} }

类:属性、类常量、方法

抽象类:属性、类常量、抽象方法

接口:接口常量、抽象方法

rush:PHP;"> class A implements a,b,c{}

一个接口只能继承一个接口

rush:PHP;"> interface a extends b{}

方法都是抽象方法不用abstract修饰,即下级类要么实现接口的方法(implements),要么也声明为抽象方法

重载技术

属性重载:如果使用一个不存在的属性,就会调用类中预先定义好的某个方法以处理数据;

对于属性不用的应用场景,做如下处理

① 取值:自动调用类中的__get() ② 赋值:自动调用类中的__set() ③ 判断是否存在:自动调用类中的__isset() ④ 销毁:自动调用类中的__unset()

前提是预先定义好这些方法,否则会报错

rush:PHP;"> ol[$key])){ return $this->ol[$key]; } return $key.' not exists'; } public function __set($key,$val){ $this->ol[$key] = $val; } public function __isset($key){ if(isset($this->ol[$key])){ return true; } return false; } public function __unset($key){ unset($this->ol[$key]); } } $obj = new bee(); echo $obj->one; echo '
'; $obj->one = 1; echo $obj->one; echo '
'; var_dump(isset($obj->one));

运行结果如下:

rush:PHP;"> one not exists 1 boolean true

方法重载:如果使用一个不存在的方法,就会调用类中预先定义好的某个方法以处理该行为;

对于方法不用的应用场景,做如下处理

① 在对象中调用不可访问的方法:__call() ② 静态方式中调用不可访问方法:__callStatic()

rush:PHP;"> PHP class bee{ public function __call($name,$arr){ echo '
'; echo 'function '.$name.' not exist'; } static function __callStatic($name,$arr){ echo '
'; echo 'function '.$name.' not exist'; } /*public function __call($name,$arr){ $num = count($arr); if($num<1){ $name(); }else{ $name = $name.'_one'; $name($arr[0]); } }*/ } $obj->func(); bee::staFunc(); /*$obj->func(1); function func(){ echo '
'; echo 'no.0'; } function func_one($val){ echo '
'; echo 'no.'.$val; }*/

运行结果如下:

rush:PHP;"> function func not exist function staFunc not exist

注意:以上方法都属于魔术方法,都带有参数

更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《

希望本文所述对大家PHP程序设计有所帮助。

原文地址:https://www.jb51.cc/php/18921.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐