> 백엔드 개발 > PHP 튜토리얼 > 【PHP动态调用方法】带参数解决思路

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

WBOY
풀어 주다: 2016-06-13 13:32:19
원래의
1014명이 탐색했습니다.

【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 的方法
就是在 继承的父类方法中调用子类新增的方法

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿