魔术方法__set()实例详解(php面向对象高级教程)
__set()的作用:
__set():在给不可访问属性赋值(private,protected,不存在)时,php就会执行__set()方法。
上面我们说了__set()的作用是:在给不可访问属性赋值(private,protected,不存在)时,php就会执行__set()方法。
这个是什么意思呢。比如说,我们还是以上面的实例为例。我们把猴子喜欢吃的桃子换成香蕉,但是根据规则来说,$food前面的关键词是protected
,不能直接访问,但是我们又需要对$food赋值,我们该怎么办呢?
<?php class Monkey{ public $name; protected $food; function __construct($name,$food){ $this->name = $name; $this->food = $food; } function sayHello(){ echo '<br/>我是' . $this->name . '我喜欢吃' . $this->food; } //魔术方法 function __get($pro_name){ //先判断$pro_name是否存在 if(isset($this -> $pro_name)){ return $this -> $pro_name; }else{ echo '属性值不存在'; } } function __set($pro_name,$value){ //先判断$pro_name是否存在 if(isset($this -> $pro_name)){ return $this -> $pro_name = $value; }else{ echo '属性值不存在'; } $monkey = new Monkey('猴子' , '桃子') $monkey -> sayHello(); echo '猴子喜欢吃' . $monkey -> food; $monkey -> food = '香蕉'; echo '<br/>'; $monkey -> sayHello();
因为我们的$food是保护的,所以不允许访问。那么,我们就要借助__set()魔术方法来实现。__set()方法包含两个参数,分别表示变量名称和变量值,两个参数不可省略。
以上是魔术方法__set()实例详解(php面向对象高级教程)的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

MyBatis动态SQL标签解读:Set标签用法详解MyBatis是一个优秀的持久层框架,它提供了丰富的动态SQL标签,可以灵活地构建数据库操作语句。其中,Set标签是用于生成UPDATE语句中SET子句的标签,在更新操作中非常常用。本文将详细解读MyBatis中Set标签的用法,以及通过具体的代码示例来演示其功能。什么是Set标签Set标签用于MyBati

当对象在Jackson库中具有父子关系时,将使用@JsonIdentityInfo注释。@JsonIdentityInfo 注解 用于在序列化和反序列化过程中指示对象身份。ObjectIdGenerators.PropertyGenerator是一个抽象占位符类,用于表示要使用的对象标识符来自POJO属性的情况。语法@Target(value={ANNOTATION_TYPE,TYPE,FIELD,METHOD,PARAMETER})@Retention(value=RUNTIME)public

Go语言支持面向对象编程,通过类型定义和方法关联实现。它不支持传统继承,而是通过组合实现。接口提供了类型间的一致性,允许定义抽象方法。实战案例展示了如何使用OOP管理客户信息,包括创建、获取、更新和删除客户操作。

Go语言支持面向对象编程,通过struct定义对象,使用指针接收器定义方法,并通过接口实现多态。面向对象特性在Go语言中提供了代码重用、可维护性和封装,但也存在缺乏传统类和继承的概念以及方法签名强制类型转换的局限性。

解析PHP面向对象编程中的享元模式在面向对象编程中,设计模式是一种常用的软件设计方法,它可以提高代码的可读性、可维护性和可扩展性。享元模式(Flyweightpattern)是设计模式中的一种,它通过共享对象来降低内存的开销。本文将探讨如何在PHP中使用享元模式来提高程序性能。什么是享元模式?享元模式是一种结构型设计模式,它的目的是在不同对象之间共享相同的

PHP中OOP最佳实践包括命名约定、接口与抽象类、继承与多态、依赖注入。实战案例包括:使用仓库模式管理数据,使用策略模式实现排序。

在Golang(Go语言)中并没有传统意义上的类的概念,但它提供了一种称为结构体的数据类型,通过结构体可以实现类似类的面向对象特性。在本文中,我们将介绍如何使用结构体实现面向对象的特性,并提供具体的代码示例。结构体的定义和使用首先,让我们看一下结构体的定义和使用方式。在Golang中,结构体可以通过type关键字定义,然后在需要的地方使用。结构体中可以包含属

python元编程基础Python元编程是动态地操作Python代码的能力,这使得Python成为一门非常强大的语言。元编程可以通过以下几种方式实现:类装饰器:类装饰器是一种修改类定义的装饰器。它可以用来添加或修改类的属性和方法,也可以用来控制类的实例化过程。defadd_method_to_class(cls):defnew_method(self):print("Thisisanewmethod")setattr(cls,"new_method",new_method)returncls@a
