webForumDet fria alternativet

Kontrollera instanser av klasser

2 svar · 169 visningar · startad av SPiN

SPiNMedlem sedan mars 20007 896 inlägg
#1

Hej!

Eftersom att jag inte kan testa mina PHP-dokument utan att starta upp burken i Linux, så tar jag mig friheten att fråga om någon här skulle vilja testa en liten sak åt mig - eller kanske rentutav vet svaret på min undran.

Jag skriver för tillfället ett system som jag bygger upp med fasligt många klasser - och för att känna av typen av klasserna i mina funktioner använder jag mig av en funktion som jag kallar is_instance_of (). Vad jag skulle vilja veta är om man kan kontrollera en instans som skickats by-reference till en funktion plus till min funktion. Jag tycker ju att det borde gå, eftersom att den pekar mot den verkligen instansen - men jag är inte säker.

Om någon kan svara på frågan, eller rentutav testa koden nedan skulle jag bli väldans glad!

<?php
function is_instance_of ( &$anInstance, $aClass ) {
	return ( ( strtolower ( get_class ( $anInstance ) ) == strtolower ( $aClass ) ) || is_subclass_of ( $anInstance, strtolower ( $aClass ) ) );
}

class TestKlassEtt {
     var $_testVariabel;
     function TestKlassEtt ( $variabel ) {
          $this->_testVariabel = $variabel;
     }
}
class TestKlassTva {
     function TestFunktionEtt ( $instans ) {
          if ( is_instance_of ( $instans, "TestKlassEtt" ) ) {
               echo "\$instans är en instans av TestKlassEtt<br/>";
          }
          else {
               echo "\$instans är INTE en instans av TestKlassEtt<br/>";
          }
     }
     function TestFunktionTva ( &$instans ) {
          if ( is_instance_of ( $instans, "TestKlassEtt" ) ) {
               echo "&\$instans är en instans av TestKlassEtt<br/>";
          }
          else {
               echo "&\$instans är INTE en instans av TestKlassEtt<br/>";
          }
     }
}

$klassEtt = new TestKlassEtt ( "SPiN!" );
$klassTva = new TestKlassTva ();

$klassTva->TestFunktionEtt ( $klassEtt );
$klassTva->TestFunktionTva ( $klassEtt );
?>
ThACRoWMedlem sedan dec. 2001314 inlägg
#2

$instans är en instans av TestKlassEtt
&$instans är en instans av TestKlassEtt

--

Jag fick parse-error först, men det vara bara du som hade glömt avsluta en liten funktion...

SPiNMedlem sedan mars 20007 896 inlägg
#3

Ah! Tack så hemskt mycket, precis vad jag väntade mig och vad jag ville veta! :D :f

Ledsen för måsvingen, lägger till den nu. ;)

128 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)