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生成缩略图的类代码
Oct 02 PHP
php cookie 登录验证示例代码
Mar 16 PHP
PHP提取数据库内容中的图片地址并循环输出
Mar 21 PHP
有关PHP中MVC的开发经验分享
May 17 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
Dec 02 PHP
Yii操作数据库的3种方法
Mar 11 PHP
php生成短网址示例
May 05 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
Laravel中Trait的用法实例详解
Mar 16 PHP
PHP单例模式详解及实例代码
Dec 21 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
Dec 24 PHP
PHP 布尔值的自增与自减的实现方法
May 03 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制作的意见反馈表源码
2007/03/11 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
PHP安全上传图片的方法
2015/03/21 PHP
php中header设置常见文件类型的content-type
2015/06/23 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
JavaScript入门教程 Cookies
2009/01/31 Javascript
JS保存、读取、换行、转Json报错处理方法
2013/06/14 Javascript
js charAt的使用示例
2014/02/18 Javascript
jQuery 实现自动填充邮箱功能(带下拉提示)
2014/10/14 Javascript
JavaScript中的比较操作符&gt;、=、
2014/12/31 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
在JavaScript中如何解决用execCommand(
2015/10/19 Javascript
jQuery自定义数值抽奖活动代码
2016/06/11 Javascript
详解JavaScript中return的用法
2017/05/08 Javascript
JS实现字符串去重及数组去重的方法示例
2018/04/21 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
python基础教程之常用运算符
2014/08/29 Python
用实例分析Python中method的参数传递过程
2015/04/02 Python
pymongo实现多结果进行多列排序的方法
2015/05/16 Python
python下如何查询CS反恐精英的服务器信息
2017/01/17 Python
用python统计代码行的示例(包括空行和注释)
2018/07/24 Python
Python中Proxypool库的安装与配置
2018/10/19 Python
python+pyqt5实现24点小游戏
2019/01/24 Python
Python使用Tkinter实现滚动抽奖器效果
2020/01/06 Python
Under Armour安德玛中国官网:美国高端运动科技品牌
2018/03/09 全球购物
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
精致的手工皮鞋:Shoe Embassy
2019/11/08 全球购物
机工车间主任岗位职责
2014/03/05 职场文书
大学生学习2014年全国两会心得体会
2014/03/12 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
2014全年工作总结
2014/11/27 职场文书
老兵退伍感言
2015/08/03 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
CocosCreator入门教程之网络通信
2021/04/16 Javascript
python执行js代码的方法
2021/05/13 Python