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

 更新时间:2014年11月17日 11:26:21   投稿:junjie  
这篇文章主要介绍了PHP使用方法重载实现动态创建属性的get和set方法,使用本文方法可以在一个类中不用在写大量的set方法或get方法,需要的朋友可以参考下

在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方法。

相关文章

  • 微信JS SDK接入的几点注意事项(必看篇)

    微信JS SDK接入的几点注意事项(必看篇)

    下面小编就为大家带来一篇微信JS SDK接入的几点注意事项(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • uniapp中scroll-view基础用法示例代码

    uniapp中scroll-view基础用法示例代码

    我们在项目中往往都能遇到实现左右滑动跟上下滑动的需求,下面这篇文章主要给大家介绍了关于uniapp中scroll-view基础用法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • javascript浅层克隆、深度克隆对比及实例解析

    javascript浅层克隆、深度克隆对比及实例解析

    这篇文章主要介绍了javascript浅层克隆、深度克隆对比及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • javascript如何合并多层级数组

    javascript如何合并多层级数组

    这篇文章主要介绍了javascript如何合并多层级数组问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • js word表格动态添加代码

    js word表格动态添加代码

    最近听说了一个名词word宏编程。自己也学习了一下js动态添加word表格
    2010-06-06
  • 基于JavaScript实现新年贺卡特效

    基于JavaScript实现新年贺卡特效

    本文介绍了一款超级炫酷的2022新年快乐html网页特效,霓虹的城市夜景和绚烂的烟花很是特别,该html页面还有交互效果,点击鼠标就会呈现烟花绽放的特效。需要的可以参考一下
    2022-01-01
  • 微信小程序用canvas实现电子签名

    微信小程序用canvas实现电子签名

    这篇文章主要为大家详细介绍了微信小程序用canvas实现电子签名,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • 浅谈JavaScript中面向对象技术的模拟

    浅谈JavaScript中面向对象技术的模拟

    浅谈JavaScript中面向对象技术的模拟...
    2006-09-09
  • Elasticsearch实现复合查询高亮结果功能

    Elasticsearch实现复合查询高亮结果功能

    这篇文章主要介绍了Elasticsearch实现复合查询,高亮结果功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • 详解JS如何实现文字溢出时用省略号...显示

    详解JS如何实现文字溢出时用省略号...显示

    这篇文章主要为大家详细介绍了JavaScript如何实现当文本内容过长时,中间显示省略号...,两端正常展示,有需要的小伙伴可以跟随小编一起学习一下
    2024-02-02

最新评论