PHP拦截器的使用(转)

PHP有如下几个拦截器:

1、__get($property)
功能:访问未定义的属性是被调用
2、__set($property, $value)
功能:给未定义的属性设置值时被调用
3、__isset($property)
功能:对未定义的属性调用isset()时被调用
4、__unset($property)
功能:对未定义的属性调用unset()时被调用
5、__call($method, $arg_array)
功能:调用未定义的方法时被调用

拦截器,顾名思义,它就“拦截”未定义的属性和方法,有点类似__autoload和__construct等方法,应用案例如下(摘自网络):

 

    1. // 若访问一个未定义的属性,则将调用get{$property}对应的方法
    2. function __get($property){
    3. $method ="get{$property}";
    4. if(method_exists($this, $method)){
    5. return $this->$method();
    6. }
    7. }
    8.  
    9. // 若给一个未定义的属性设置值,则将调用set{$property}对应的方法
    10. function __set($property, $value){
    11. $method ="set{$property}";
    12. if(method_exists($this, $method)){
    13. return $this->$method($value);
    14. }
    15. }
    16. // 若用户对未定义的属性调用isset方法,
    17. function __isset($property){
    18. $method ="isset{$property}";
    19. if(method_exists($this, $method)){
    20. return $this->$method();
    21. }
    22. }
    23. // 若用户对未定义的属性调用unset方法,
    24. // 则认为调用对应的unset{$property}方法
    25. function __unset($property){
    26. $method ="unset{$property}";
    27. if(method_exists($this, $method)){
    28. return $this->$method();
    29. }
    30. }
    31. function __call($method, $arg_array){
    32. if(substr($method,0,3)=="get"){
    33. $property = substr($method,3);
    34. $property = strtolower(substr($property,0,1)).substr($property,1);
    35. return $this->$property;
    36. }
    37. }

转载于:https://www.cnblogs.com/xingmeng/p/3248612.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux线程负载,linux 排查cpu负载过高异常(转载)

问:如何定位是哪个服务进程导致CPU过载,哪个线程导致CPU过载,哪段代码导致CPU过载?步骤一、找到最耗CPU的进程工具:top方法:执行top -c ,显示进程运行信息列表键入P (大写p),进程按照…

Net操作Excel(终极方法NPOI)

前言 Asp.net/C#操作Excel已经是老生长谈的事情了,可下面我说的这个NPOI操作Excel,应该是最好的方案了,没有之一,使用NPOI能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xl…

WIN10自带远程桌面实现多用户登录

一台主机当两台用,利用WIN10自带远程桌面实现多用户登录 2020-04-27 10:51:24 54点赞 311收藏 35评论 先来说说家里电脑和网络的基本情况。 新房装修时就考虑到家庭多媒体和自己变态的各种网络需求,所以全屋用企业级的网络设备组成了千兆网&#xff0…

PingingLab传世经典系列《CCNA完全配置宝典》-2.7 EIGRP基本配置

2.7 EIGRP基本配置实验目的:1、掌握EIGRP的基本配置。2.掌握EIGRP的邻居表、拓扑表、路由表。3.掌握EIGRP的无类特性。实验拓扑:实验步骤:1、依据图中拓扑配置各设备的IP地址,并保证直连连通性;在R1上做如下…

linux通过ip计算广播地址,子网掩码、网络地址、广播地址的计算

例如 192.168.1.53/27 如何计算出它的子网掩码、网络地址、广播地址、可用的主机数和最大可容纳主机数、可用的IP地址。子网掩码和主机数:192.168.1.53/27为例讲解,这就是平时说的C类IP地址,平时大家用的是192.168.0.*或192.168.1…

KubeFlow安装指南

【摘要】 Kubeflow是Google推出的基于kubernetes环境下的机器学习组件,通过Kubeflow可以实现对TFJob等资源类型定义,可以像部署应用一样完成在TFJob分布式训练模型的过程。 组件 http://pachyderm.io/ http://www.argoproj.io/ Kubeflow使用场景 希望…

c#字符相似度对比通用类

本类适用于比较2个字符的相似度&#xff0c;代码如下&#xff1a; View Code using System;using System.Collections.Generic;using System.Text;public class StringCompute{#region 私有变量/// <summary>/// 字符串1/// </summary>private char[] _ArrChar1;/…

linux 日记函数,每日记一些php函数,jQuery函数和linux命令(一)

每天记一些php函数&#xff0c;jQuery函数和linux命令(一)简介&#xff1a;学习完了php和jQuery之后&#xff0c;对函数的记忆不到位&#xff0c;导致很多函数没记住&#xff0c;所以为了促进自己的记忆&#xff0c;每天花一点时间来写这个博客。时间&#xff1a;2016-12-18 …

蒋家骏_百度百科

蒋家骏_百度百科蒋家骏

基于Kubernetes的Spark部署完全指南

基于Kubernetes的Spark部署完全指南 【编者的话】本文是在Kubernets上搭建Spark集群的操作指南&#xff0c;同时提供了Spark测试任务及相关的测试数据&#xff0c;通过阅读本文&#xff0c;你可以实践从制作Spark镜像、搭建Spark容器集群&#xff0c;到在集群上运行测试任务的…

javascript数字格式化通用类——accounting.js使用

简介 accounting.js 是一个非常小的JavaScript方法库用于对数字&#xff0c;金额和货币进行格式化。并提供可选的Excel风格列渲染。它没有依赖任何JS框架。货币符号等可以按需求进行定制。 代码内容及下载地址 accounting.js代码如下&#xff1a; View Code /*!* accounting…

linux清除cpu,解决kswapd0 CPU占用率高的问题-清除病毒

连接服务器时发现cpu使用率100%&#xff0c;使用top命令查看是kswapd0进程占用cpu极高百度下后知道kswapd0进程的作用&#xff1a;它是虚拟内存管理中&#xff0c;负责换页的&#xff0c;操作系统每过一定时间就会唤醒kswapd &#xff0c;看看内存是否紧张&#xff0c;如果不紧…

Apache+Mysql+php+ZenTaoPMS安装配置文档

基于ApacheMysqlphpZenTaoPMS安装配置一、Apache安装配置tar zxvf httpd-2.2.23.tar.gzcd httpd-2.2.23mkdir –p /usr/local/app/apache2./configure --prefix/usr/local/app/apache2 --enable-so \--enable-maintainer-mode --enable-rewrite #添加后面的参数是为了解析s…

富编译器汇总及二次开发Demo

富文本编译器汇总 名称总大小当前版本官方地址扩展方法xhEditor1.43 MBv1.1.14http://xheditor.comhttp://xheditor.com/demos/demo09.htmlMarkitUp98.7 KBv1.1.13http://markitup.jaysalvat.com/home在set.js里设置开发。jwysiwyg1.52 MBv0.98https://github.com/akzhan/jwys…

docker安装nginx并配置SSL到个人博客

1 准备 1.已安装好docker环境 2.已申请好域名 2 申请SSL证书 我使用的是腾讯云&#xff0c;申请免费的TrustAsia的SSL证书&#xff0c;阿里云等或者其他平台一般都会提供TrustAsia的SSL证书的 填好域名等相关信息&#xff0c;一般一天就可以下载证书了 3 docker安装Nginx …

redhat linux 6.5 vnc,redhat 6.5 YUM安装kvm 并用VNC远程管理

安装完REDHAT&#xff0c;我们首先配置yum源先卸载系统原来的YUM包一、配置redhat yum源#rpm -aq|grep yum|xargs rpm -e --nodeps下载YUM源&#xff0c;我用的是&#xff11;&#xff16;&#xff13;的# wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-plugin…

Net处理html页面元素工具类(HtmlAgilityPack.dll)的使用

简介 本文介绍net处理html页面元素的工具类(HtmlAgilityPack.dll)的使用&#xff0c;用途比较多的应该是例如采集类的功能&#xff0c;采集到的html字符串要怎样处理是一个头痛的问题&#xff0c;如果是截取就太麻烦了而且容易出错。所有就用到本文的第三方dll来处理了。 下载…

Mongo数据库安装成Windows服务

Mongo数据库安装成Windows服务每次运行mongod --dbpath D:/MongoDB/data命令行来启动MongoDB实在是不方便&#xff0c; 把它作为Windows服务&#xff0c;这样就方便多了。1、代码示例&#xff1a;D:\MongoDB\bin>mongod --dbpath D:\Work\MongoDB\Data --directoryperdb --l…

用DOSBox运行老游戏

DOSBox0.74-3-win32-installer.exe下载地址&#xff1a; https://nchc.dl.sourceforge.net/project/dosbox/dosbox/0.74-3/DOSBox0.74-3-win32-installer.exe 金庸群侠传&#xff1a;https://dos.zczc.cz/games/%E9%87%91%E5%BA%B8%E7%BE%A4%E4%BE%A0%E4%BC%A0/download 新版本…

HttpWebRequest采集读取网站挂载Cookie的通用方法

Asp.net 版本 HttpWebRequest采集时添加&#xff1a;httpWebRequest.CookieContainer new CookieContainer();就能远程挂载上cookie,那么怎样去读取挂载上的cookie呢&#xff1f; 下面方法为大家解除烦恼。 遍历方法&#xff1a; public static List<Cookie> GetAllC…