PHP类相关知识点实例总结


Posted in PHP onSeptember 28, 2016

本文实例总结了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中全局变量global的使用演示代码
May 18 PHP
php使用百度天气接口示例
Apr 22 PHP
PHP 快速排序算法详解
Nov 10 PHP
PHP实现文件下载详解
Nov 27 PHP
PHP浮点数的一个常见问题
Mar 10 PHP
php使用文本统计访问量的方法
May 12 PHP
总结PHP删除字符串最后一个字符的三种方法
Aug 30 PHP
PHP版微信小店接口开发实例
Nov 12 PHP
laravel中的一些简单实用功能
Nov 03 PHP
php弹出提示框的是实例写法
Sep 26 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
Feb 11 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
Mar 09 PHP
PHP 闭包详解及实例代码
Sep 28 #PHP
php类的自动加载操作实例详解
Sep 28 #PHP
PHP对象克隆clone用法示例
Sep 28 #PHP
PHP简单遍历对象示例
Sep 28 #PHP
PHP标准类(stdclass)用法示例
Sep 28 #PHP
PHP类型约束用法示例
Sep 28 #PHP
PHP类和对象相关系统函数与运算符小结
Sep 28 #PHP
You might like
Terran历史背景
2020/03/14 星际争霸
php横向重复区域显示二法
2008/09/25 PHP
php URL编码解码函数代码
2009/03/10 PHP
Php Mssql操作简单封装支持存储过程
2009/12/11 PHP
PHP中用hash实现的数组
2011/07/17 PHP
php中call_user_func函数使用注意事项
2014/11/21 PHP
PHP+MySQL修改记录的方法
2015/01/21 PHP
mac os快速切换多个PHP版本的方法
2017/03/07 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
javascript 二进制运算技巧解析
2012/11/27 Javascript
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
jquery 追加tr和删除tr示例代码
2013/09/12 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
javascript每日必学之循环
2016/02/19 Javascript
jQuery实现的checkbox级联选择下拉菜单效果示例
2016/12/26 Javascript
JS给按钮添加跳转功能类似a标签
2017/05/30 Javascript
layui问题之模拟select点击事件的实例讲解
2018/08/15 Javascript
react-native滑动吸顶效果的实现过程
2019/06/03 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
2020/02/07 Javascript
[53:49]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
视觉直观感受若干常用排序算法
2017/04/13 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
将python字符串转化成长表达式的函数eval实例
2020/05/11 Python
python 自定义异常和主动抛出异常(raise)的操作
2020/12/11 Python
谈一谈HTML5本地存储技术
2016/03/02 HTML / CSS
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
小学教师学期末自我评价
2013/09/25 职场文书
《邮票齿孔的故事》教学反思
2014/02/22 职场文书
大二学生自我检讨书
2014/10/23 职场文书
2015年市场部工作总结
2015/04/30 职场文书
第一书记观后感
2015/06/08 职场文书
Python办公自动化PPT批量转换操作
2021/09/15 Python
JavaScript选择器函数querySelector和querySelectorAll
2021/11/27 Javascript
2022年四月新番
2022/03/15 日漫
MySQL中LAG()函数和LEAD()函数的使用
2022/08/14 MySQL