__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)
{
return $this->$name;
}

function __destruct()
{
echo "结束啦。对象销毁";
}

}

$r = new Ren();
$r->name = "张三";
$r->age = 30;
$r->sex="女";
var_dump($r);
echo $r->age;

//面向对象的三大特性
//1.封装
//1)目的:让类更加安全,不让外界直接访问类里面的成员变量
//2)做一个方法来实现变量取值或赋值,在方法里加限制条件
//使用类里面的魔术方法实现对私有成员的操作
//__set()特性:自动执行,把赋值语句中的变量作为第一个参数,把赋值语句中的变量值作为第二个参数,调用__set()方法
//__get()特性:自动执行,把取值语句中的变量作为参数调用__get方法

//小结:对private类私有成员的操作,只需假如__set(),__get()函数即可。

//2.继承
//3.多态

?>

时间: 2024-11-08 20:25:51

__set(),__get() 魔术方法示例的相关文章

__set()与__get() 魔术方法

在面向对象编程的过程中,对于类当中的各个成员变量,都有不同的访问属性,比如公有的(public)属性,在类内部和类外部都可直接调用:而私有的(private)和受保护的(protected),在类外不能直接赋值和使用,必须通过在类当中定义成员函数对该属性的成员变量进行操作,今天要提的__set()和__get()魔术方法就是针对私有成员进行赋值和获取值操作. 具体的方法可以参考下面的示例代码: 首先,不用魔术方法进行操作,直接定义函数: <!DOCTYPE html> <html>

PHP常用魔术方法(__set、__get魔术方法:)

__set.__get魔术方法: //文件名:Object.php <?phpnamespace IMooc;class Object{ protected $array = array(); function __set($name, $value)//set魔术方法 { var_dump(__METHOD__);//输出当前方法 $this->array[$name]=$value;//$name=title,$value="哎哟喂" } function __get(

php中的重载以及几个常用的魔术方法示例

在面向对象语言中,有一个很重要的概念——overload,即重载.所谓重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同.但是,在php中,这个概念跟大多面向对象语言中的“重载”一点关系都没有,根本就是风马牛不相及的. php中的重载,是指动态地"创建"类属性和方法.当调用当前环境下未定义或不可见的类属性或方法时,重载方法会被调用.再说的直白点,就是访问一个类或者对象的不可访问的属性或者方法的时候的一种处理机制.(不可访问,比如不存在或者因访问关键字的限制而

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

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

【PHP高级特性】魔术方法/魔术常量

魔术方法 是PHP面向对象中特有的特性.它们在特定的情况下被触发,都是以双下划线开头,你可以把它们理解为钩子,利用魔术方法可以轻松实现PHP面向对象中重载(Overloading即动态创建类属性和方法).魔术方法很多还是成对出现的,以下列出目前PHP中所有的模式方法. 1.__construct和__destruct __constuct 实例化对象的时候被调用,适合用于对象的初始化操作 __destruct 明确销毁对象或脚本结束时被调用 2.__get和__set __set 当给不可访问或

PHP中的常见魔术方法功能作用及用法实例

概述 在面向对象编程中,PHP提供了一系列的魔术方法,这些魔术方法为编程提供了很多便利.PHP中的魔术方法通常以__(两个下划线)开始,并且不需要显示的调用而是由某种特定的条件出发.这篇文章简单总结了PHP中提供的魔术方法. 开始之前 在总结PHP的魔术方法之前先来定义两个类,以便后边示例使用: 复制代码代码如下: <?phpclass Device {    public $name;               public $battery;            public $data

PHP中的面向对象OOP中的魔术方法

一.什么是魔术方法: PHP为我们提供了一系列用__开头的函数,这些函数无需自己手动调用,会在合适的时机自动调用,这类函数称为魔术函数.例如: function __construct(){} 在new一个新对象时自动调用此函数 二.PHP中都有那些魔术方法,以及它们的作用:1.__construct():构造函数,new对象时自动调用 eg: class Person{ public $name; public $age; function __construct($name,$age){ $

php 魔术方法学习笔记

__get()  __set()    __isset()   __unset __call   __callstatic __call是调用不可见(不存在或者没权限)的方法时,自动调用. $lisi->say(1,2,3)   对象中并不存在say 方法   __call("say",array(1,2,3))运行 __get()用来获取私有成员的属性值,有一个参数,参数传入你要获取的私有成员的属性名称,返回的是获取的值.该方法不用我们手工去调用,只需要封装在类里面就好了.如果

php 的简单存在 (魔术方法作用之一:容错)

<span style="font-family:KaiTi_GB2312;font-size:18px;"><?php // 重载 class Person{ //定义属性 public $name; private $age; //构造方法 public function __construct($name,$age){ $this->name =$name; $this->age =$age; } //获取魔术方法 # @param string $