Betrachten Sie den folgenden PHP-Schnipsel:Ist das in PHP möglich?
<?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
?>
Ist es möglich, die verfügbar() Methode wie folgt (und nach wie vor, wenn die verfügbare Methode aufgerufen wird, nicht nur wahr oder falsch zurück) zu nennen?
var_dump($Is->Domain('google.com')->Available()); // false
Wenn ja, wie?
EDIT: Würde das den Trick machen?
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;
}
}
Vielen Dank im Voraus!
PS: Dieses Snippet ist abgeschnitten, also erwarte nicht, dass es alleine Sinn macht.
+1, das war, was ich dachte, ich erwog auch, die Objektdomäne zurückzugeben, und wenn keine Methode der Domäne aufgerufen wurde, würde der __toString in Aktion treten und true zurückgeben, andernfalls wäre die Zeichenfolge keine Domäne, die sie einfach zurückgeben würde falsch. Denkst du, dass es eine gute Idee ist? –
Bitte werfen Sie einen Blick auf meine Bearbeitung. –
@eyze: Nein. Ich habe gerade getestet und Objekte, wenn Cast zu Boole sind immer wahr, __toString() heißt nicht –