这次我遇到了一个难题。我有:
[文件夹](文件)
结构目录
[类]
- (class.page.php)
- (class.main.php)
的 [芯]
- (core.test.php)
现在 class.data.php
<?php
class DataTools {
public function clean($string) {
if (!empty($string)) {
$string = addslashes($string);
$string = mysql_real_escape_string($string);
$string = (string)$string;
$string = stripslashes($string);
$string = str_replace(" ", "", $string);
$string = str_replace("(", "", $string);
$string = str_replace("=", "", $string);
return $string;
} else {
echo "Error";
die();
}
}
现在 class.page.php
<?php
class Page {
public function __construct {
include "class.data.php";
$data = New DataTools();
}
?>
现在 core.test.php
<?php
require_once "../class/class.page.php";
$page = new Page;
$nome = $data->clean("exemple"); // line 13
?>
当我打开class.test.php时,它会显示: 致命错误:在第13行上的/membri/khchapterzero/core/core.test.php中的非对象上调用成员函数clean()(这不重要因为我减少了页面主题,但原始页面中的行是我发布的,另一行是评论)
答案 0 :(得分:0)
这似乎没问题,如果所有文件都在一个文件夹中,它可以正常工作,我尝试并没有错误。检查你的结构和名称。 我查了一下:
Test->
class.data.php
class.page.php
core.test.php
仅包含文件名。 所以再次检查你的路径
答案 1 :(得分:0)
$ data在Page对象中定义,它不能作为全局范围内的变量使用。并且因为您没有将它存储为Page obejct的类成员,所以当Page的构造函数解析时它也会丢失。
解决此问题:
首先使$ data成为Page类的一个类成员,这样在构造函数完成后不会丢弃它
<?php
class Page {
public function __construct {
require_once "../include/class.data.php";
$this->data = New DataTools();
}
?>
然后,在页面内访问此数据变量,而不是尝试直接调用$ data:
$nome = $page->data->clean("exemple");