PHP__set和__get魔术方法
来源:互联网 发布:github源码在微信上 编辑:程序博客网 时间:2024/06/05 15:01
简介
php和java重载的对比
php的重载和java等语言的重载不同。java里,重载指一个类中可以定义参数列表不同。java里,重载只一个类中可以定义参数列表不同但名字相同的多个方法。比如,java、也有构造函数,java允许有多个构造函数,只要保证方法签名不一样就行,而PHP则在一个类中只允许有一个构造函数
php重载
php提供的重载指动态的创建类属性和方法。因此,__set和__get方法被归在重载里
若类中定义了这两个魔术方法,那么当给对象属性赋值活着取值时,即使这个属性不存在,也不会报错,一定程度上增强了程序的健壮性。
有了这两个魔术方法,是不是对私有属性的操作变得更方便了呢?
实际上并没有什么奇怪的,因为这两个方法本身就是public、的,她们和在对外的public、方法中操作private属性的远离是一样的,只不过这对魔术方法时期操作更简单,不需要显示的调用一个public的方法,因为这对魔术方法在操作类变量时是自动调用的。当然,也可以把类属性定义成public的,这样就可以随意在类的外部进行读写,不过如果知识为了方便,类属性在任意时候都定义成public、权限显然是不合适的,也不符合面向对象的设计思想
代码部分
错误代码
<?php class Tuzi{ private $name; private $age; } $tuzi = new Tuzi; $tuzi->name;//会报错误
正确代码
<?phpclass Tuzi{ private $name; private $age; public function __set($name,$value){ $this -> $name = $value; } public function __get($name){ if(!isset($this->$name)){ echo "没有设置"; $this -> $name = "正在为你设置默认值"; }else{ return $this -> $name; } }}$tuzi = new Tuzi;$name = $tuzi -> name="tuzi";$age = $tuzi -> age = 20;echo $name."<br/>";echo $age;
阅读全文
0 0
- PHP__set和__get魔术方法
- 魔术方法__set()和__get()
- PHP魔术方法之__set()和__get()
- PHP 魔术方法之"__set()"和"__get"
- php魔术方法__get和__set详解
- 魔术方法:__set、__get
- PHP魔术方法之__get()和__set()方法
- php魔术方法__set和__get,__isset,__unset的用法
- 面向对象之魔术方法__get()和__set()
- 详解php的魔术方法__get()和__set()使用介绍
- php魔术方法__SET 和 __GET 应用实例
- php 魔术方法 __set __get
- 面向对象 __get 魔术方法
- PHP 魔术方法__set() __get() 方法
- PHP 魔术方法__set() __get() 方法详解
- PHP 魔术方法__set() __get() 方法
- PHP 魔术方法__set() __get() 方法
- PHP 魔术方法之__set() __get() 方法
- c++入门笔记(12)面向对象语言
- 维吉尼亚密码暴力破解c++实现
- Kotlin属性和变量-2.2-Properties and Fields
- oo分析与设计
- linux下VSFTPD安装
- PHP__set和__get魔术方法
- 移动端触摸事件
- C语言运算符总结
- 超大文件编码转换
- Prim算法
- 位运算
- cuda并行编程基础(二)
- Kotlin-1.3-控制流程(if, when, for, while)
- 开启博客-2017年12月19日