我有一个php类的问题,我会把一个类的函数中的return = true或false带到另一个类的另一个函数
<?php
class CheckCity {
private $x = 10;
private $y = 10;
public function __construct () {
$this->x = rand(10, 10);
$this->y = rand(10, 10);
}
public function Check() {
$exists = mysql_query("SELECT * FROM _users WHERE x = $this->x AND y = $this->y LIMIT 1");
if ( mysql_num_rows ( $exists ) == 1 ) {
return true;
} else {
return false;
}
}
}
class setCity extends CheckCity {
public function Set() {
parent::Check();
if ( $setcity->Check() == true ) {
echo "is TRUE";
} else {
echo "is FALSE";
}
}
}
这是索引:
<?php
$conn = mysql_connect('localhost', 'root', '') or die ('Error 1.');
mysql_select_db('db', $conn) or die ('Error 2.');
include "func.php";
$checkcity = new CheckCity();
$checkcity->Check();
$setcity = new setCity();
$setcity->Set();
所以这是错误:
Fatal error: Call to a member function Check() on a non-object in /func.php on line 37
我搜索了错误谷歌,我尝试了很多解决方案但无济于事。
答案 0 :(得分:2)
您的代码:
$setcity->Check()
应该是:
$this->Check()
答案 1 :(得分:0)
错误在于:
if ( $setcity->Check() == true ) {
$ setcity未声明为SetCity类的新实例。
class setCity extends CheckCity {
public function Set() {
if ( $this->Check() ) {
echo "is TRUE";
} else {
echo "is FALSE";
}
}
}
请参阅using $this or parent:: to call inherited methods?
这不是绝对必要的,但我建议你这样做,以防你重写你的类中的方法(正在扩展的方法)。
答案 2 :(得分:0)
在您的setCity类中,您正在引用未声明的变量$setcity
并尝试在其上调用函数。由于$setcity
中没有类,因此php会引发致命错误。
如果您想对该对象的方法中的当前对象进行操作,请使用$this
关键字。
PS。您应该阅读一些有关命名类及其方法的编程最佳实践... :)