考慮下面的PHP代碼片段:在PHP中這可能嗎?
<?php
class Is
{
function __get($key)
{
$class = __CLASS__ . '_' . $key;
if (class_exists($class) === true)
{
return $this->$key = new $class();
}
return false;
}
function Domain($string)
{
if (preg_match('~^[0-9a-z\-]{1,63}\.[a-z]{2,6}$~i', $string) > 0)
{
return true;
}
return false;
}
}
class Is_Domain
{
function Available($domain)
{
if (gethostbynamel($domain) !== false)
{
return true;
}
return false;
}
}
$Is = new Is();
var_dump($Is->Domain('google.com')); // true
var_dump($Is->Domain->Available('google.com')); // false
?>
是否可以調用可用()方法是這樣的(並且仍然僅返回true或false如果可用的方法是不叫)?
var_dump($Is->Domain('google.com')->Available()); // false
如果是,怎麼辦?
編輯:這會做詭計嗎?
class Is
{
function __get($key)
{
// same as before
}
function Domain($string)
{
if (preg_match('~^[0-9a-z\-]{1,63}\.[a-z]{2,6}$~i', $string) > 0)
{
return (bool) $this->Domain;
}
return false;
}
}
class Is_Domain
{
function __toString()
{
return true;
}
function Available($domain)
{
if (gethostbynamel($domain) !== false)
{
return true;
}
return false;
}
}
在此先感謝!
PS:這段代碼被截斷了,所以不要指望它只是通過它自己使它變得很有意義。
+1,這是我雖然,我也考慮返回對象域,如果沒有方法的域名被調用,然後__toString會進入行動,並返回true,否則是該字符串不是一個域,它會簡單地返回假。你認爲這是一個很好的理想嗎? – 2009-08-20 14:01:01
請看看我的編輯。 – 2009-08-20 14:04:43
@eyze:不,我只是測試和對象投向布爾時總是如此,__toString()不叫 – 2009-08-20 14:09:33