Heim  >  Artikel  >  Backend-Entwicklung  >  【PHP动态调用方法】带参数解决思路

【PHP动态调用方法】带参数解决思路

WBOY
WBOYOriginal
2016-06-13 10:21:36868Durchsuche

【PHP动态调用方法】带参数
我有一个VO类。
columnVo extends Model

我要Model里调用Vo的方法。  

但是: new ColumnVo($db) ,这里要传入一个重量级的$db.
但是我的Vo里的方法是不要应用到$db的。
------------------------------------------
在Model里要实现这种功能: $this->Vo方法(方法参数) 怎么办?

因为当前$this已经指向ColumnVo,而ColumnVo初始化的时候,已经有$db了。
如果用反射的话,是不是要经历如下步骤:
  1.new ColumnVo 
  2.调用新的Vo的方法。
这样的话,资源浪费。而且也没有办法调用当前$this的其他已经初始化好的资源。

------解决方案--------------------
单例模式
------解决方案--------------------
看到了好久才明白一点,你是希望有的子类不要继承父类的某个属性或方法?
那不如在父类的构造函数中想想办法
------解决方案--------------------
如老大所说,单例模式可以不再让你把对象传来传去。在需要的地方调用一个静态方法就可以了
另外动态调用一个方法,用 call_user_func_array() 足够
------解决方案--------------------
我想你是把事情弄混了

columnVo extends Model
你实例化的是 columnVo 而不是 Model
所谓的在 Model 中调用 columnVo 的方法
就是在 继承的父类方法中调用子类新增的方法

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn