Maison > interface Web > js tutoriel > le corps du texte

PHP utilise la surcharge de méthodes pour implémenter les méthodes get et set qui créent dynamiquement des attributs.

PHPz
Libérer: 2018-09-30 11:49:21
original
1567 Les gens l'ont consulté

这篇文章主要介绍了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(&#39;lvcy&#39;);
$p->setage(23);
$p->setAddress(chengdu);
$p->setschool(&#39;uestc&#39;);
$p->setphonenum(&#39;123456&#39;);
echo $p->getname().&#39;\\n&#39;;
echo $p->getage().&#39;\\n&#39;;
echo $p->getaddress().&#39;\\n&#39;;
echo $p->getschool().&#39;\\n&#39;;
?>
Copier après la connexion

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

以上就是本章的全部内容,更多相关教程请访问php编程从入门到精通全套视频教程

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal