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脚本的10个技巧(7)
Oct 09 PHP
php 传值赋值与引用赋值的区别
Dec 29 PHP
如何解决CI框架的Disallowed Key Characters错误提示
Jul 05 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
Apr 19 PHP
使用YUI+Ant 实现JS CSS压缩
Sep 02 PHP
Java和PHP在Web开发方面对比分析
Mar 01 PHP
php的闭包(Closure)匿名函数初探
Feb 14 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
May 18 PHP
基于php实现的php代码加密解密类完整实例
Oct 12 PHP
PC端微信扫码支付成功之后自动跳转php版代码
Jul 07 PHP
PHP中用Trait封装单例模式的实现
Dec 18 PHP
php中array_fill函数的实例用法
Mar 02 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
建立文件交换功能的脚本(二)
2006/10/09 PHP
php 生成文字png图片的代码
2011/04/17 PHP
linux下安装php的memcached客户端
2014/08/03 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
PHP编译安装时常见错误解决办法
2015/05/28 PHP
PHP5.2中PDO的简单使用方法
2016/03/25 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
2017/08/10 PHP
JQuery 操作select标签实现代码
2010/05/14 Javascript
JS获取并操作iframe中元素的方法
2013/03/21 Javascript
js在IE与firefox的差异集锦
2014/11/11 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
基于js对象,操作属性、方法详解
2016/08/11 Javascript
vue2.X组件学习心得(新手必看篇)
2017/07/05 Javascript
前端axios下载excel文件(二进制)的处理方法
2018/07/31 Javascript
浅谈在不使用ssr的情况下解决Vue单页面SEO问题(2)
2018/11/08 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
浅谈JavaScript闭包
2019/04/09 Javascript
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
基于JavaScript判断两个对象内容是否相等
2020/01/10 Javascript
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
Python图像处理模块ndimage用法实例分析
2019/09/05 Python
python中class的定义及使用教程
2019/09/18 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
2021/01/29 Python
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
客户经理岗位职责
2013/12/08 职场文书
分层教学实施方案
2014/03/19 职场文书
本科毕业生自荐信
2014/06/02 职场文书
学校师德师风整改方案
2014/10/28 职场文书
2014年小学工作总结
2014/11/26 职场文书
和谐拯救危机观后感
2015/06/15 职场文书
员工规章制度范本
2015/08/07 职场文书
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸
在Oracle表中进行关键词搜索的过程
2022/06/10 Oracle
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL