所以我试图为我的程序构建我的类文件时遇到了一个奇怪的错误。在使用PHP之前,我从来没有遇到过这个问题,尤其是面向对象的PHP。基本上解释它的最快方法是添加一个新文件使另一个文件不存在。我会在下面演示:添加新的Class文件破坏程序
文件#1
//process.php
require_once '../../inc/config.php';
include 'ProcessApplication/ProcessApplication.php';
$processor = new ProcessApplication($CONN);
if($processor->getConn()){
list($general, $phone) = $processor->processGeneralInfo($_REQUEST['general_information'];
}
我不会包括来自ProcessApplication.php文件中的所有代码,因为它是不相关的。
文件#2
class ProcessApplication{
protected $conn = null;
function __construct($CONN){
$this->conn = $CONN;
}
public function getConn(){
return $this->conn;
}
.
.
.
}//end ProcessApplication class
FILE#3,简单的测试程序,以确保的传承工作正常
class ProcessApplicationQuery extends ProcessApplication{
public function getReady(){
if($this->getConn()){ //edited as of most recent update
print "Ready";
}else{
print "not Ready";
}
}
}
到目前为止文件#3没有被列入,程序仍然工作。在这一点上我现在已经将其纳入文件#1,我不知道为什么
//process.php
require_once '../../inc/config.php';
include 'ProcessApplication/ProcessApplication.php';
include 'ProcessApllication/ProcessApplicationQuery.php'; //2nd class file added
$processor = new ProcessApplication($CONN);
if($processor->getConn()){
list($general, $phone) = $processor->processGeneralInfo($_REQUEST['general_information'];
$processor->getReady(); //added to check file #3 was working
}
所以,现在文件#1已经更新。即使它工作的很好,我也会得到Fatal Error: failed to open file stream '../../inc/config.php'
,然后我撤销所有更新,并将FILE#1恢复到原始状态,并且程序仍然失败。
基于我在PHP和JAVA中学到的关于面向对象编程的所有知识,这一小套程序应该能够正常工作。除非它简单的我忘记了,否则我看不到我的错误在哪里。我非常沮丧,我希望这对某人有意义。
===最新通报===
文件#1现在看起来是这样,这已经更新到正确的解决问题的方法匹配
//process.php
include '../../inc/config.php';
include 'ProcessApplication/ProcessApplication.php';
include 'ProcessApplication/ProcessApplication.php';
$processor = new ProcessApplicationQuery($CONN);
if($processor->getConn()){
list($general, $phone) = $processor->processGeneralInfo($_REQUEST['general_information'];
$processor->getReady(); // this prints out "ready"
}
范围解析运算符(::)是“静态的,恒定的,覆盖的属性或一个类的方法”。 getConn不是那些。只需使用getConn()而不是parent :: getConn()。 – bobdye 2015-02-23 16:12:39
好吧我会尝试,但在我这样做之前,它的顺序是否对你有意义?既然'File#2'就是一切都要去的地方,那么应该是父类还是其他所有的孩子呢?我只是想确保我的编程标准是正确的。 – 2015-02-23 16:14:36
继承看起来不错,但它只是真正的片段,所以我不知道你将要结束的架构。 – bobdye 2015-02-23 16:17:05