OVH Cloud OVH Cloud

Appel statique ?

1 réponse
Avatar
Zouplaz
Bonjour, j'ai un problème assez bizarre : je souhaite interdire tout
appel statique à une méthode de ma classe (je suis sous PHP4, avec
lequel les méthodes statiques sont un peu une vue de l'esprit) mais je
me retrouve avec isset($this) retournant 1 (vrai) quand l'appel est
statique.

Voici un test :
echo "here";
$imgRows = ImgModule::app_getListRow($pub_id,"ea",$att_icons);

et dans la classe en question

function app_getListRow($pub_id, $callerModule, $geticons = true)
{
echo "static = " . !isset($this);
/* snip */
}

Et bien j'obtiens
here static =

Donc $this est vrai alors que l'appel est statique.

Pas vraiment normal.

Existe un autre moyen (un bon) pour détecter si un appel est statique ou
pas ?

1 réponse

Avatar
ftc
Bonjour, j'ai un problème assez bizarre : je souhaite interdire tout
appel statique à une méthode de ma classe (je suis sous PHP4, avec
lequel les méthodes statiques sont un peu une vue de l'esprit) mais je
me retrouve avec isset($this) retournant 1 (vrai) quand l'appel est
statique.


Je pense qu'il doit y avoir une erreur quelque part dans ton code car un
test rapide donne bien le résultat attendu :

<?php
class Test {
function testFunction() {
if( isset( $this ) ) {
echo 'Yes';
}
else {
echo 'No';
}
}
}

Test::testFunction();

$t = new Test;

$t->testFunction();

?>