[英]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.