PHP OOP检查类是否返回true或false?

PHP OOP检查类是否返回true或false?,php,return-value,Php,Return Value,所以是的,我想知道你是否能做到 class Ping { function __construct() { return self::ping(); } private static function ping() { if ((1 - 1) == 0) { return false; } else { r

所以是的,我想知道你是否能做到

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
must
return
'2'

基本上,我想检查它是否返回
true
false

例如,布尔变量可以执行以下操作:

if (variable) 
{
    then...
}

但是为什么一个班级不能这样做呢?我的意思是我正在返回布尔值,使用构造函数?为什么它不工作?

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

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

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

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

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

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

因为构造函数用于实例化类,而您得到的
返回的
是实例本身。。。。不过,请看一下PHP5.5中的新功能

编辑


我本以为我读过一些关于从PHP5.5中实现的对象构造函数中取消引用(类似于数组取消引用)的内容,但目前找不到对它的任何引用,因为构造函数用于实例化类,而您得到的
返回的
是实例本身。。。。不过,请看一下PHP5.5中的新功能

编辑


我想我读过一些关于从PHP5.5中实现的对象构造函数中解引用(类似于数组解引用)的内容,但目前找不到任何对它的引用

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

但是,您可以:

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

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

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

但是,您可以:

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

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

包含此
var_转储(new Ping())
将准确地显示返回的内容,但OOP正确的方式是
$ping=new ping()$ping->ping()作为
新Ping()创建ping类的实例,而不仅仅返回true或false。涵盖此
var_转储(新Ping())
将准确地显示返回的内容,但OOP正确的方式是
$ping=new ping()$ping->ping()作为
新Ping()创建ping类的实例,而不仅仅返回true或false。这很公平。在这种情况下,我只是想让我的代码更干净,而不使用任何类似的函数。但在PHP5.4中,这有可能实现吗?我实际上不确定@Mark似乎知道这是PHP5.5中的一个新特性。良好的luckNo到目前为止发布的php版本允许您重写构造函数的返回值。无论你做什么,你都会得到新的对象实例。这很公平。在这种情况下,我只是想让我的代码更干净,而不使用任何类似的函数。但在PHP5.4中,这有可能实现吗?我实际上不确定@Mark似乎知道这是PHP5.5中的一个新特性。良好的luckNo到目前为止发布的php版本允许您重写构造函数的返回值。不管你做什么,你都会得到新的对象实例。你是说PHP 5.4:
类成员实例化访问已经被添加,例如(new Foo)->bar()
?这是@redreggae的一个-不完全是构造函数的返回,但是应该可以按照OP的要求实现一些东西-我在检查5.5变更日志,但找不到它你的意思是PHP5.4:
实例化时添加了类成员访问,例如(new Foo)->bar()
?这是一个@redreggae-不完全是构造函数的返回,但是应该可以按照OP的要求实现一些东西——我在查看5.5变更日志,但找不到它