PHP之魔术方法
PHP中的魔术方法:
PHP的魔术方法主要是在特定的条件下执行相应的魔术方法。这和很多框架中的钩子函数有些类似,不同的是,钩子函数是在生命周期的某个周期内自动执行,而魔术方法是在触发某种条件下自动执行。
PHP中常用的魔术方法有:set(),get(),call()等魔术方法。set()和get()的使用情况是:一般情况下,我们在类的外部不能访问类里面的私有变量,但我们实在需要在类的外部访问类的私有变量(private)时,就可以使用set()和get()方法,例如:
class fruit
{
private $fruitName;
private $color;
public function __set($var,$val)
{
$this->$var = $val;
}
public function __get($var)
{
return $this->$var;
}
}
$fruit = new Fruit();
$fruit->fruitName = '苹果';
echo $fruit->fruitName;
这样就能在类的外边访问类的私有属性。
__call的使用情况是:当我们调用的类的方法不存在的时候,自动执行__call方法,至于__call方法中怎么执行,看编码者的喜好。
__call的存在意义主要在于:当我们调用一个类中不存在的方法时,不让系统报错,而是执行一段我们需要的逻辑。
PHP之魔术方法的更多相关文章
- PHP基础知识之魔术方法
		__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sle ... 
- 前端学PHP之面向对象系列第二篇——魔术方法
		× 目录 [1]构造方法 [2]析构方法 [3]不可访问属性[4]对象复制[5]字符串[6]对象不存在[7]自动加载类[8]串行化[9]函数调用 前面的话 php在面向对象部分有很多相关的魔术方法,这 ... 
- PHP中的魔术方法(2)
		1.__get.__set这两个方法是为在类和他们的父类中没有声明的属性而设计的__get( $property ) 当调用一个未定义的属性时访问此方法__set( $property, $value ... 
- 魔术方法__sleep 和 __wakeup
		感觉序列化和反序列化用得倒是比较少了,而json_encode和json_decode用得相对多,都是转化成串,进行入库.传输等.json更方便,但是序列化和反序列化结合这两个魔术方法使用倒还行< ... 
- Python魔术方法-Magic Method
		介绍 在Python中,所有以"__"双下划线包起来的方法,都统称为"Magic Method",例如类的初始化方法 __init__ ,Python中所有的魔 ... 
- php魔术方法使用场景
		php魔术方法-----__tostring(),__invoke,__call(),__callStatic ... __tostring(),__invoke() __tostring()方法是在 ... 
- PHP中的魔术方法:__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload
		1.__get.__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的: __get( $property ) 当调用一个未定义的属性时访问此方法: __set( $property, $ ... 
- PHP 类中的魔术方法
		定义: PHP类中以两个下画线“__”开头的方法被称为魔术方法. 分类: 例如:构造方法:__construct:析构方法:__destruct:动态重载:__set().__get().__call ... 
- php中的魔术方法
		__construct 构造器是一个魔术方法,当对象被实例化时它会被调用.在一个类声明时它常常是第一件做的事但是没得必要他也像其他任何方法在类中任何地方都可以声明,构造器也能像其他方法样继承.如果我们 ... 
- PHP面向对象之魔术方法复习
		魔术方法复习 2014-9-2 10:08:00 NotePad++ By jiancaigege 飞鸿影~========================= 1.__construct() 构造方法 ... 
随机推荐
- sed应用
			删除每行空白字符 sed -i 's/^[[:space:]]*//' user.txt 删除空白行 sed -i '/^$/d' user.txt 
- C#如何在生成文件夹或者文件时候自动重命名
			如果你在一个文件夹里面, 连续添加文件夹或者文件(不改名字), 那么系统会自动加上(1),(2),(3)... 这个效果我在网上搜不到, 自己写一下也不太难. 文件夹的:(不断点击按钮就有效果) pr ... 
- HIbernate常见异常(转载)
			SSH阶段常见的异常系列之一hibernate(15条) 异常一 异常一 异常描述: Sax解析异常:cvc-复杂的类型,发现了以元素maping开头的无效内容,应该是以 ‘{“http://www. ... 
- 最大流 USTC1280
			挺有意思的一题,最小路径之后最大流 /************************************************************** 作者:陈新 邮箱:cx2pirate ... 
- 简单的Java ee思维导图
- 转	 Redis 总结精讲 看一篇成高手系统-4
			转 Redis 总结精讲 看一篇成高手系统-4 2018年05月31日 09:00:05 hjm4702192 阅读数:125633 本文围绕以下几点进行阐述 1.为什么使用redis 2.使用r ... 
- ConcurrentHashMap实现原理
			ConcurrentHashMap是Java并发包中提供的一个线程安全且高效的HashMap实现(若对HashMap的实现原理还不甚了解,可参考我的另一篇文章HashMap实现原理及源码分析),Con ... 
- TCP聊天工具的实现
			由于本人天生愚钝,所以关于聊天工具的编程一直都没学会,尽管网上教程一大堆,但是关于IdTCPClient IdTCPServer 的不多,今天终于学会一些,分享给像我一样纠结的小伙伴,下一步学习多线 ... 
- 程序执行流程:猜数字游戏;库的使用:turtle
			>>> import turtle >>> turtle.circle(50) >>> turtle.circle(100) Python 3.6 ... 
- oracle 根据一个表更新另一个表内容
			declarecursor c_col is select * from xtgl_jgmcbm where substr(v_jgbm,0,2)in('41');--v_sjbm in( selec ... 
