源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-03-02 18:20 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:PHP使用方法重载实现动态创建属性的get和set方法
在PHP中,我们不能够直接通过方法名相同,签名不同的方法来实现方法重载,因为PHP是弱数据类型,不能很好的区分签名。但是,可以在PHP的类中运用__call()方法来实现方法重载。当调用一个类中并不存在的方法时,会自动调用__call()方法,其形式为__call($name,$arguments) 其中$name是方法的名称,$arguments是一个数组类型的参数。 下面的例子是使用PHP的方法重载来动态创建get和set方法。(在面向对象编程中,一个类中的属性会使用get和set来赋值,但是如果一个类中有太多的属性,比如30个,那么如果不用方法重载的话,我们就需要写30个set方法,30个get方法,自已一边慢慢写去吧。。。)
[u]复制代码[/u] 代码如下:
<?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方法。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部