-1

我的 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

我用谷歌搜索了错误,我尝试了很多解决方案,但无济于事。

4

3 回答 3

2

你的代码:

$setcity->Check()

应该:

$this->Check()
于 2013-07-13T23:43:47.733 回答
0

错误在这里:

 if ( $setcity->Check() == true ) {

$setcity 未声明为 SetCity 类的新实例。

class setCity extends CheckCity {

    public function Set() {
        if ( $this->Check() ) {

            echo "is TRUE";

        } else {

            echo "is FALSE";

        }

    }

}

请参阅使用 $this 或 parent:: 调用继承的方法?

$this 不是绝对必要的,但我建议您这样做,以防您覆盖类中的方法(正在扩展的方法)。

于 2013-07-13T23:46:09.760 回答
0

在您的 setCity 类中,您正在引用一个未声明的变量$setcity并尝试对其调用函数。由于 中没有类$setcity,php 会引发致命错误。

如果要在该对象的方法中对当前对象进行操作,请使用$this关键字。

PS。您真的应该阅读一些有关命名类及其方法的编程最佳实践... :)

于 2013-07-13T23:50:17.863 回答