【发布时间】:2011-08-31 19:13:32
【问题描述】:
以下是我的简化代码
<?php
$database = new db();
$file = new file();
$input = new input();
$output = new output();
$data = "SELECT * FROM table;";
$input->page($data);
class db {
public function queryExecute($var) {
$var = $this->queryEncode($var);
$var = $this->querySubmit($var);
return $var;
}
public function queryEncode($var) {
// Do somthing
return $var;
}
public function querySubmit($var) {
// Do somthing
return $var;
}
}
问题是当我将它添加到代码中时:
class input {
public function page($data) {
// Do something
$pageQuery = db::queryExecute($data);
}
}
有了这个,我必须做两件事。首先,如果服务器设置为严格,我必须隐藏db::queryExecute($data); 代码的错误。现在解决第二个问题。如果被引用的类正在引用另一个类,但这次是在它自己的类中,我似乎无法使用这行代码(这是我发现除了使用 Abstract 之外引用其他类的唯一方法)。
为了更好的解释,过程如下:
- 获取
$data变量并将其发送到$input->page()函数($input->page($data))。 - 引用
db类,$input->page()函数通过db::queryExecute()格式(db::queryExecute($data))将信息发送到$database->queryExecute()函数。 - 但是因为我们使用
::,当$database->queryExecute()引用$database->queryEncode()和$database->querySubmit()使用$this->操作符($this->queryEncode()和$this->querySubmit()),$this->当前属于@987654340不是$database->。
那么解决方案是什么...以不同的方式引用另一个类(而不是::)?定义类时使用$_GLOBAL 变量?使用 $this-> 以外的东西?将所有类配置为使用ABSTRACT/EXTENDS(或INTERFACE)?
输出的以下错误指的是$var = $this->queryEncode($var);:
Fatal error: Call to undefined method input::querySubmit() in C:\[...]\global.php on line 12
【问题讨论】:
-
发布您收到的错误。
标签: php class reference external