php实现动态创建属性的get和set方法实例详解
程序员文章站
2022-05-02 13:38:55
...
在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方法。
以上就是php实现动态创建属性的get和set方法实例详解的详细内容,更多请关注其它相关文章!
上一篇: 解析xml PHP用SAX解析XML的实现代码与问题分析
下一篇: PHP下如何对文件进行加锁
推荐阅读
-
PHP中__get()和__set()的用法实例详解
-
详解php的魔术方法__get()和__set()使用介绍
-
PHP中__get和__set的用法实例详解
-
C#动态对象(dynamic)详解(实现方法和属性的动态)
-
详解php的魔术方法__get()和__set()使用介绍
-
PHP中__get()和__set()的用法实例详解_PHP
-
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
-
详解php的魔术方法__get()和__set()使用介绍_PHP教程
-
PHP中__get()和__set()的用法实例详解_PHP
-
PHP中__get()和__set()的用法实例详解_PHP教程