PHP从其他类调用子类的父方法
我的项目中有3个类(连接类、父类和子类) 母公司PHP从其他类调用子类的父方法,php,Php,我的项目中有3个类(连接类、父类和子类) 母公司 class Upload { public function UploadFile(){ /* some code */ } } 孩子 现在,我想创建一个可以使用其他类的方法的类 Class Example { private $db; private $ph; public function __construct( Mysqliconn $db, Photo $ph) {
class Upload {
public function UploadFile(){
/* some code */
}
}
孩子
现在,我想创建一个可以使用其他类的方法的类
Class Example {
private $db;
private $ph;
public function __construct( Mysqliconn $db, Photo $ph) {
$this->db = $db;
$this->ph = $ph;
}
public function callUploadPhoto() {
$this->ph->UploadPhoto();
}
}
以这种方式实例化
$db = new Mysqliconn();
$ph = new Photos($db);
$ex = new Example($db, $ph);
我的问题是,我可以调用其他类的方法,但不能调用引用父类的方法。
如果我调用photos类的$ex->callUploadPhoto(),它调用的是getUrl()方法,而不是父上传方法Upload()。
我怎么能这样做?谢谢尝试在未来使用新的PHP5.4.0
这可以很容易地解决您的问题…您得到的错误到底是什么
UploadPhoto函数行2中的$name变量是什么?$this->Upload($name)?您的示例类需要扩展Photos类。这就解决了问题。要调用同一类的父方法,请使用
parent::somethod()
$this->somethod()和parent::somethod()在这种情况下都是相同的。我不理解这个问题-Photo extends Upload。通过继承机制,Photo拥有所有(非私有)上传方法,因此对$this->Upload in Photo的调用应该像在Photo中实现了功能一样工作。-不过有一件事:在您的示例中,您使用参数($name)定义了函数,但是在调用中,您没有给出$name。应该指出,从技术上讲,Upload()
方法是Upload类的旧式构造函数。。这是自找麻烦。@Ben我怎么能用“新风格”做到这一点?谢谢,我不得不使用PHP5。3@fruityp如果我们使用特征,那么我们可以很容易地映射出这种方法。。。去阅读关于性格特征的文档,除非你投了反对票here@Kalpit我知道特性是什么,OP没有使用它们,这将避免他/她遇到的问题,这对学习PHP/OO概念没有帮助。在这种情况下,建议使用另一种方法只是为了避免手头的问题,这是没有帮助的。在哪里定义了$name?为什么不在Upload类中编写_构造来编写构造函数,然后尝试调用父类::_构造();在照片课上?对不起,我不明白我该怎么扩展。你能告诉我怎么做吗?谢谢
$db = new Mysqliconn();
$ph = new Photos($db);
$ex = new Example($db, $ph);