Mammouth du PHP |
19672 Messages
05 nov. 2006, 19:05
Si tu as des méthodes statiques dans ta classe et tu peux vouloir les utiliser depuis l'extérieur : mais ces méthodes peuvent éventuellement faire appel à des méthodes privées de cette même classe : si elle ne sont pas statiques aussi, tu n'y auras pas accès du tout (en théorie). En pratique, ça fonctionne, mais selon les standards stricts PHP5, tu vas avoir une erreur :
<?php
class maclasse
{
public static function mafonction1()
{
try
{
$retour = maclasse::mafonction2();
}
catch (Exception $e)
{
$retour = $e;
}
return $retour;
}
private static function mafonction2()
{
return true;
}
public static function mafonction3()
{
try
{
$retour = maclasse::mafonction4();
}
catch (Exception $e)
{
$retour = $e;
}
return $retour;
}
private function mafonction4()
{
return true;
}
}
/* Utilisation */
$r1 = maclasse::mafonction1();
if(is_bool($r1))
{
$val1 = (true === $r1) ? "reussi" : "raté";
}
else
{
$val1 = $r;
}
echo("<p>Premier appel : ". $val1 ."</p>\n");
$r2 = maclasse::mafonction3();
if(is_bool($r2))
{
$val2 = (true === $r2) ? "reussi" : "raté";
}
else
{
$val2 = $r;
}
echo("<p>Second appel : ". $val2 ."</p>\n");
?>
Ce code va afficher ce qui suit :
Premier appel : reussi
Strict Standards: Non-static method maclasse::mafonction4() should not be called statically in C:\Program Files\Visicom Media\WebExpert 6\usager\tmp9864.html on line 42
Second appel : reussi
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse 