PHP OOP检查类是返回true还是false?

时间:2013-07-24 11:19:59

标签: php return-value

所以是的,我想知道你是否可以做到这一点..

class Ping 
{

    function __construct()
    {
        return self::ping();
    }

    private static function ping()
    {

        if ((1 - 1) == 0)
        {
            return false;
        }
        else
        {
            return true;
        }
    }
}

用法是:

Class ServerHandler
{

    public function check()
    {
        if (new Ping())
        {
            ECHO 1;
        }
        else
        {
            echo 2;
        }
    }

}

所以基本上,它不起作用。我的网站回显“1”而不是“2”因为false必须return'2'。

基本上,我想检查它是否会返回truefalse

例如,布尔变量可以这样做:

if (variable) 
{
    then...
}

但为什么班级不能这样做?我的意思是我使用构造函数返回布尔值?为什么不起作用?

3 个答案:

答案 0 :(得分:5)

因为构造函数用于实例化类,所以你得到的是returned实例本身......虽然看看PHP 5.5中的新功能

修改

我以为我从PHP 5.5中实现的对象构造函数中读到了一些关于解除引用(类似于数组解除引用)的内容,但目前找不到对它的任何引用

答案 1 :(得分:3)

我认为PHP不关心构造函数中的return语句。它应该始终返回创建的对象(Ping的实例)。由于Ping的实例不为空,if(new Ping())的计算结果为true,并且回显“1”。

如果ping实际上只是一个调用,为什么要使用对象?您可以在某种静态库中静态定义(例如NetUtils)。如果ping更复杂并且您认为它适合面向对象的模型,则分两步执行ping。

Ping pingObj = new Ping();
pingObj->ping();

答案 2 :(得分:1)

如果不直接调用构造函数,它将始终返回一个对象。

但是,你可以这样做:

$ob = new Ping();
$ob->__construct();

第二行代码将返回构造函数return中的内容。在您的情况下,它应该返回false