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中文字符截取防乱码
Mar 28 PHP
PHP处理excel cvs表格的方法实例介绍
May 13 PHP
关于crontab的使用详解
Jun 24 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
Oct 23 PHP
详谈PHP程序Laravel 5框架的优化技巧
Jul 18 PHP
thinkPHP的表达式查询用法详解
Sep 14 PHP
php中简单的对称加密算法实现
Jan 05 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 PHP
php遍历目录下文件并按修改时间排序操作示例
Jul 12 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
May 29 PHP
aec加密 php_php aes加密解密类(兼容php5、php7)
Mar 14 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
PHP Memcached应用实现代码
2010/02/08 PHP
使用php判断网页是否gzip压缩
2013/06/25 PHP
PHP动态输出JavaScript代码实例
2015/02/12 PHP
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
js如何调用qq互联api实现第三方登录
2014/03/28 Javascript
JavaScript实现继承的4种方法总结
2014/10/16 Javascript
一个JavaScript获取元素当前高度的实例
2014/10/29 Javascript
jQuery如何防止这种冒泡事件发生
2015/02/27 Javascript
ES6概念 ymbol.for()方法
2016/12/25 Javascript
react高阶组件经典应用之权限控制详解
2017/09/07 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
iview在vue-cli3如何按需加载的方法
2018/10/31 Javascript
使用react render props实现倒计时的示例代码
2018/12/06 Javascript
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
ES6中let、const的区别及变量的解构赋值操作方法实例分析
2019/10/15 Javascript
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
详解vue中v-bind:style效果的自定义指令
2020/01/21 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
jQuery实现本地存储
2020/12/22 jQuery
python实现无证书加密解密实例
2014/10/27 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
python 读入多行数据的实例
2018/04/19 Python
Python Pillow Image Invert
2019/01/22 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
python性能测试工具locust的使用
2020/12/28 Python
巴西在线鞋店:Shoestock
2017/10/28 全球购物
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
护理专业推荐信
2013/11/07 职场文书
影视动画专业个人的自我评价
2013/12/31 职场文书
大学生职业规划论文
2014/01/11 职场文书
高中军训广播稿
2014/01/14 职场文书
英语课外活动总结
2014/08/27 职场文书
商业计划书之服装
2019/09/09 职场文书
mysql5.7使用binlog 恢复数据的方法
2021/06/03 MySQL