PHP类相关知识点实例总结

5年以前  |  阅读数:619 次  |  编程语言:PHP 

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

最终类与最终方法

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


    final class a{}
    class a{
      final public function A(){}
    }

抽象类与抽象方法


    abstract class a {
      public abstract function func();
    }
    class A extends a{
      public function func(){}
    }

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


    abstract class name{}

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


    abstract public function name($val);

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

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

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

接口

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


    interface a{
      function func();
    }
    class A implements a {
      function func(){}
    }

类:属性、类常量、方法

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

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

① 相比抽象类,接口可实现'多继承'


    class A implements a,b,c{}

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


    interface a extends b{}

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

重载技术

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

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

① 取值:自动调用类中的get()
② 赋值:自动调用类中的
set()
③ 判断是否存在:自动调用类中的isset()
④ 销毁:自动调用类中的
unset()

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


    <?php
    class bee{
      public $ol = array();
      public function __get($key){
        if(isset($this->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 '<br>';
    $obj->one = 1;
    echo $obj->one;
    echo '<br>';
    var_dump(isset($obj->one));

运行结果如下:


    one not exists
    1
    boolean true

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

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

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


    <?php
    class bee{
      public function __call($name,$arr){
        echo '<br>';
        echo 'function '.$name.' not exist';
      }
      static function __callStatic($name,$arr){
        echo '<br>';
        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 '<br>';
      echo 'no.0';
    }
    function func_one($val){
      echo '<br>';
      echo 'no.'.$val;
    }*/

运行结果如下:


    function func not exist
    function staFunc not exist

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

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

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

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例