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
mustreturn
'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变更日志,但找不到它