PHP 特殊方法 __set()、__get()

<?php
	header("Content-type: text/html; charset=utf-8"); 
	class person{
		//成员属性
		private $name;
		private $age = 20;
		//成员方法
		function username($name){
			return $this->name=$name;
		}
		//__set()方法用来设置私有属性
    	function __set($property_name, $value) { 
        echo "在直接设置私有属性值的时候,自动调用了这个 __set() 方法为私有属性赋值<br />";
        $this->$property_name = $value; 
    	}

    	//__get()方法用来获取私有属性
    	function __get($property_name) {  
        echo "在直接获取私有属性值的时候,自动调用了这个 __get() 方法<br />";
    	}
	}
	$obj= new person();
	echo $obj->username("张三");
	echo "<hr/>";
	$obj->name = "李四";//在直接设置私有属性值的时候,自动调用了这个 __set() 方法为私有属性赋值
	echo "<hr/>";
	echo $obj->age;//在直接获取私有属性值的时候,自动调用了这个 __get() 方法,不设置get特殊方法就会报下面的错
	//echo $obj->age;//当成员属性或者方法前有private修饰,不能在类外访问。否则报错如下
	/*
	 Fatal error: Cannot access private property person::$age in D:\wamp\www\ajax\index.php on line 23
	*/
?>

时间: 2024-10-12 09:25:35

PHP 特殊方法 __set()、__get()的相关文章

php魔术方法__SET __GET

__SET  设置一个不可访问的属性的时候 调用_set方法 __GET 获取一个不可访问的属性的时候  调用_get 方法 <?php class stu{ private $a; private $b = 0; public $c; public $d = 0; //这里的 private 可以用 protected public 替代 private function __get($name) { return 123; } //这里的 private 也可以用 protected pub

__set(),__get() 魔术方法示例

<?php class Ren{private $name;private $age;private $sex;function __set($name,$value){ if($name == "age") { if($value < 50 && $value > 10) { $this->$name = $value; } } else { $this->$name = $value; }}function __get($name){

PHP面向对象魔术方法之__get 和 __set函数

l 基本的介绍 (1) 当我们去使用不可以访问的属性时,系统就会调用__get方法. (2) 不可以访问的属性指的是(1 . 该属性不存在 2. 直接访问了protected或者private属性) (3) 当程序员去给不可以访问的属性直接赋值,系统就会调用__set方法 l 举例说明 需求是: 如果对象有一个成员变量是private.protectd的,我希望在在类的外部通过 : $对象名->变量名的方式来赋值和取值,怎么办? 代码如下 <?php header('content-type:

php __set __get __isset __unset用法防被忽悠分析

大家好我是小烟  今天分享下 php面向对象中__set __get __isset __unset用法之防忽悠介绍 全文注意===================================== __set __get __isset __unset  这些方法 老版本php是可以设置成私有的 但是现在php版本 最好不要设置成私有 更不能设置成静态 设置成静态方法直接就出错了  设置成私有的话 虽然能正常返回值 但是会有个 Warning 警告!!(本人是php5.5版本) 正文开始==

php对象:__autoload()函数及单入口文件,__set(), __get(), get_class_methods(),get_class_vars()

__autoload():当类中找不到相关类的时候,会自动执行__autoload()函数,可以自动加载相关文件 __set() : 当对类的私有变量进行调用赋值时,自动调用该方法. __get() : 在外部获得类的私有属性时,自动调用该方法. get_class_methods(): 获取类的方法 get_class_vars(): 获取类的属性 传入类名,返回数组 私有变量外部能不能访问 来自为知笔记(Wiz)

php中的魔术方法__call(),__clone(),__set(),__get()

__call($a,$v),当在类外部调用类中不存在或者不可见(用protected,private修饰)的方法时,会自动调用__call(方法名,数组参数),此时会向改方法传递2个参数,第一个为调用的方法名,第二个为传递的参数放进数组里.__clone()方法在类的对象被克隆时触发.__set($key,$val)在类外部设置类中不存在或者不可见(protected,private修饰)的属性时触发该方法,此时传递2个参数,第一个是属性名,第二个是属性值.__get($key)在类外部获取类中

php __set() __get() __isset() __unset()四个方法的应用

_set() __get() __isset() __unset()四个方法的应用 一般来说,总是把类的属性定义为private,这更符合现实的逻辑.但是,对属性的读取 和赋值操作是非常频繁的,因此在PHP5 中,预定义了两个函数“__get()”和“__set()”来获 取和赋值其属性,以及检查属性的“__isset()”和删除属性的方法“__unset()”. 上一节中,我们为每个属性做了设置和获取的方法,在PHP5 中给我们提供了专门为属 性设置值和获取值的方法,“__set()”和“__

PHP 特殊方法 __set()、__get()、__isset() 与 __unset()

__set() 方法用于设置私有属性值. __get() 方法用于获取私有属性值. __isset() 方法用于检测私有属性值是否被设定. __unset() 方法用于删除私有属性. 实际应用中,经常会把类的属性设置为私有(private),那么需要对属性进行访问时,就会变得麻烦.虽然可以将对属性的访问写成一个方法来实现,但 PHP 提供了一些特殊方法来方便此类操作. __set() __set() 方法用于设置私有属性值: function __set($property_name, $val

数据持久化、单例、重载【添加对不可访问的成员的操作】、魔术方法、类常量、static关键字对self的补充【静态延迟绑定实现$this的效果】、参数类型约束【参数前加类名】、遍历【iterator接口】、快速排序

1.数据持久化过程[传输(例如表单提交或php交互mysql)和保存过程] 使用的是字符串形式的流数据. 数据流就是为了传输[按照序列的形式进行传输] [http://baike.baidu.com/link?url=0MtUQMhFzc_EwJc09rXZV8KlfOL4jis6XNbRfmGA3rQhDcGwOp8togLVQjXBV34M] 所以将其他类型数据转化为字符串的过程也是序列化的过程 [这个概念和图片.视频的流媒体的区别?] [注意点] 另外mysql中sql语句中的某些关键词为