php 魔术方法学习笔记

__get()  __set()    __isset()   __unset

__call   __callstatic

__call是调用不可见(不存在或者没权限)的方法时,自动调用。

$lisi->say(1,2,3)   对象中并不存在say 方法   __call("say",array(1,2,3))运行

__get()用来获取私有成员的属性值,有一个参数,参数传入你要获取的私有成员的属性名称,返回的是获取的值。该方法不用我们手工去调用,只需要封装在类里面就好了。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。如下代码

//__get()方法用来获取私有属性

class tian{
private $age=18;
public function __get($property_name)
{
if(isset($this->$property_name)){
return($this->$property_name);
}

}
}
$a=new tian();
echo $a->age;

如果要调用的私有属性存在,就会返回传递给私有属性的值,否则就为空

$a=new tian();

$a->age;此处会得到18,通过__get()魔术方法,使得在类的外部也能调用私有属性。

__set() 为私有属性赋值,有两个参数,一个参数是私有属性的名称,第二个参数是要给私有属性赋的值,没有返回值,同样也不需要我们手动去调用,是封装在类中的。

例如如下代码

class tian{
private $age=18;
public function __get($property_name)

if(isset($this->$property_name)){
return($this->$property_name);
}

}

public function __set($a,$v){
echo  $this->$a ;

}
}
$a=new tian();
echo $a->name="大傻逼";

如果成员属性不是私有的,也不会调用到该函数。

时间: 2024-10-13 11:32:19

php 魔术方法学习笔记的相关文章

zepto.1.1.6.js源码中的each方法学习笔记

each方法接受要遍历的对象和对应的回调函数作为参数,它的作用是: 1.如果要遍历的对象是类似数组的形式(以该对象的length属性值的类型是否为number类型来判断),那么就把以要遍历的对象为执行环境,将回调函数放到该执行环境中去循环执行length次: 2.如果要遍历的对象不类似数组,那么用for key in obj 的方法循环执行回调函数key次,同样以要遍历的对象为执行环境,将回调函数放到该执行环境中去循环执行. function each(elements, callback){

[其他]计算机网络-自顶向下方法 学习笔记

计算机网络与因特网 Nobody no why, it just works! by Qijd 一.发展史 分组交换 1961-1972 专用网络和网络互联 开始产生TCP UDP等协议 网络的激增 1980-1990 因特网爆炸 29世纪90年代 万维网应用出现 二.基本构成 core - edge - resourse 资源子网与通信子网构成计算机网络 端系统通过 因特网服务提供商 ISP(InternetServiceProvider)接入因特网 端系统.分组交换机和其他因特网部件通过pr

Java中关于 ArrayList 和 Map 的常用遍历方法 (学习笔记,便于以后查询)

一.学习ArrayList与Map时,关于常用遍历方法的记录如下:  二.附源码如下: package com.study.in.myself; import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map; public class Study16 { public static void main (String

读详解Linux配置iSCSI方法--学习笔记

http://tech.watchstor.com/storage-module-121394.htm http://blog.csdn.net/holandstone/article/details/7963822 iSCSI(互联网小型计算机系统接口)是一种在Internet协议网络上,特别是以太网上进行数据块传输的标准,是一种集成了IP和SCSI的技术.它最大的特点就是让标准的SCSI命令能够在TCP/IP网络上的主机系统(启动器)和存储设备(目标)之间传送.iSCSI是基于IP协议的技术

PHP之析构方法学习笔记

__destruct() 当对象被销毁时候,系统内部会自动调用该方法. 分三类:   1.当php代码 声明周期执行完毕结束后: 会自动调用该方法 2.当对象被unset()后 :系统会自动调用该方法 3.当对象被重新赋值后 :系统会自动调用该方法 1 class Test{ 2 3 public function __destruct(){ 4 5 echo "对象被销毁之后,执行的代码"; 6 } 7 } 8 9 $test = new Test(); 10 11 unset($t

dojo/dom-construct.toDom方法学习笔记

toDom方法用来将html标签字符串转化成DOM节点.1.7之后toDom方法被分配到了dom-construct模块. require(["dojo/dom-construct"], function(domConstruct){ // Take a string and turn it into a DOM node var node = domConstruct.toDom("<div>I'm a Node</div>"); });

OKR 方法 学习笔记

最近公司兴起了对OKR这个词的讨论,并且听到时总会伴随提到KPI,提到绩效考核.那OKR到底是什么呢?与KPI的区别在哪里?与绩效考核有什么关系?它与我们现在推行的敏捷开发有啥关系呢?因此,就到网上查了些资料,加上个人的一些经验和理解,尽量用少的篇幅,整理成了这篇文章. 一.什么是OKR 我们先来看下什么是ORK,OKR的全称是Objectives and Key Results,即目标与关键成果法.它是一套定义和跟踪目标及其完成情况的管理方法. 一般人看到OKR都会想起Google.事实上,O

SimRank--基于结构的相似度度量方法学习笔记

详见:Glen Jeh 和 Jennifer Widom 的论文SimRank: A Measure of Structural-Context Similarity? 一.简介 目前主要有两大类相似性度量方法: (1) 基于内容(content-based)的特定领域(domain-specific)度量方法,如匹配文本相似度,计算项集合的重叠区域等: (2) 基于链接(对象间的关系)的方法,如PageRank.SimRank和PageSim等.最近的研究表明,第二类方法度量出的对象间相似性更

python中strip()方法学习笔记

Python strip() 方法用于移除字符串头尾指定的字符(默认为空格). 当使用strip('xxx'),只要字符串头尾有"xxx"中的一个,就会去掉,而不是符合字符串''xxx''才去掉 1 >>> string = 'aaabbbccc' 2 >>> string.strip('abc') 3 '' 4 >>> string2 = 'aaaffbbcc' 5 >>> string2.strip('abc'