[英]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”。
基本上,我想检查它是否返回true
或false
。
例如,一个布尔变量可以做到这一点:
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.