PHP使用方法重载实现动态创建属性的get和set方法


Posted in Javascript onNovember 17, 2014

在PHP中,我们不能够直接通过方法名相同,签名不同的方法来实现方法重载,因为PHP是弱数据类型,不能很好的区分签名。但是,可以在PHP的类中运用__call()方法来实现方法重载。当调用一个类中并不存在的方法时,会自动调用__call()方法,其形式为__call($name,$arguments) 其中$name是方法的名称,$arguments是一个数组类型的参数。

下面的例子是使用PHP的方法重载来动态创建get和set方法。(在面向对象编程中,一个类中的属性会使用get和set来赋值,但是如果一个类中有太多的属性,比如30个,那么如果不用方法重载的话,我们就需要写30个set方法,30个get方法,自已一边慢慢写去吧。。。)

<?php

class person

{

 private $name;

 private $age;

 private $address;

 private $school;

 private $phonenum;

 public function __call($method,$args)

 {

  $perfix=strtolower(substr($method,0,3));

  $property=strtolower(substr($method,3));

  if(empty($perfix)||empty($property))

  {

   return;

  }

  if($perfix=="get"&&isset($this->$property))

  {

   return $this->$property;

  }

  if($perfix=="set")

  {

   $this->$property=$args[0];

  }

 }

}

$p=new person();

$p->setname('lvcy');

$p->setage(23);

$p->setAddress(chengdu);

$p->setschool('uestc');

$p->setphonenum('123456');

echo $p->getname().'\\n';

echo $p->getage().'\\n';

echo $p->getaddress().'\\n';

echo $p->getschool().'\\n';

?>

通过__Call()方法很容易的解决了这个问题,而不是编写每个属性的get set方法。

Javascript 相关文章推荐
js下判断 iframe 是否加载完成的完美方法
Oct 26 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
Apr 20 Javascript
原生javascript实现无间缝滚动示例
Jan 28 Javascript
node.js Web应用框架Express入门指南
May 28 Javascript
jquery.mobile 共同布局遇到的问题小结
Feb 10 Javascript
jQuery中toggle()函数的使用实例
Apr 17 Javascript
jquery实现滑动特效代码
Aug 10 Javascript
jQuery常用的一些技巧汇总
Mar 26 Javascript
js入门之Function函数的使用方法【新手必看】
Nov 22 Javascript
ES6中Math对象新增的方法实例详解
Apr 25 Javascript
基于react组件之间的参数传递(详解)
Sep 05 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
Dec 22 Javascript
PHP PDO操作总结
Nov 17 #Javascript
JavaScript函数详解
Nov 17 #Javascript
提升PHP安全:8个必须修改的PHP默认配置
Nov 17 #Javascript
详解Javascript 装载和执行
Nov 17 #Javascript
jQuery带箭头提示框tooltips插件集锦
Nov 17 #Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
Nov 17 #Javascript
浅谈jQuery异步对象(XMLHttpRequest)
Nov 17 #Javascript
You might like
php的控制语句
2006/10/09 PHP
php读取csv文件并输出的方法
2015/03/14 PHP
php实现的农历算法实例
2015/08/11 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
自制PHP框架之设计模式
2017/05/07 PHP
javascript实现依次输入input自动定焦
2014/12/23 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
Javascript实现图片懒加载插件的方法
2016/10/20 Javascript
JSON与JS对象的区别与对比
2017/03/01 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
vue中使用iview自定义验证关键词输入框问题及解决方法
2018/03/26 Javascript
Jquery的autocomplete插件用法及参数讲解
2019/03/12 jQuery
JavaScript实现随机五位数验证码
2019/09/27 Javascript
详解Vue.js 作用域、slot用法(单个slot、具名slot)
2019/10/15 Javascript
用webAPI实现图片放大镜效果
2020/11/23 Javascript
python实现的简单抽奖系统实例
2015/05/22 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
2018/06/11 Python
python实现简单http服务器功能
2018/09/17 Python
Python模块/包/库安装的六种方法及区别
2020/02/24 Python
python图片指定区域替换img.paste函数的使用
2020/04/09 Python
一文读懂Python 枚举
2020/08/25 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
无畏的旅行:Intrepid Travel
2017/12/20 全球购物
Cotton On南非:澳洲时尚平价品牌
2018/06/28 全球购物
EntityManager都有哪些方法
2013/11/01 面试题
Python面试题集
2012/03/08 面试题
会计个人实习计划书
2014/08/15 职场文书
党员干部观看《周恩来四个昼夜》思想汇报
2014/09/10 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
初中历史教学反思
2016/02/19 职场文书
详解TypeScript中的类型保护
2021/04/29 Javascript
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers