繁体   English   中英

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

[英]PHP OOP checking if a class is returning true or false?

是的,我想知道您是否可以做到。

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...
}

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

因为构造函数用于实例化类,所以returned是实例本身。。。尽管看一下PHP 5.5中的新功能

编辑

我以为我会从PHP 5.5中实现的对象构造函数中读到有关解引用(类似于数组解引用)的信息,但目前找不到对它的任何引用

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

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

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

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

但是 ,您可以执行以下操作:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM