La Pause Café du Forum Programmation [PART 2]

Mouarf, c koi cette attaque de noob :smiley:


Ce couillon fait le ménage, maintenant les news ont disparu

Il a utilisé un script qui vise fluxbb visiblement

Ah ben c’est du propre :open_mouth:

Je suis tombé sur un bug PHP bizarre :

<?php

class Bidule {
	function abc() {
		echo 'I\'m Bidule::abc()', "\n";
		$this->def();
	}
	function def() {
		echo 'I\'m Bidule::def()', "\n";
	}
}

class Machin {
	function xyz() {
		echo 'I\'m Machin::xyz()', "\n";
		Bidule::abc(); // Appel static-style à une méthode d'objet (et non de classe)
	}

	function def() {
		echo 'I\'m Machin::def()';
	}
}

$machin = new Machin();
$machin->xyz();

?>

Qui produit la sortie suivante :[quote=«  »]
I’m Machin::xyz() // Va appeler Bidule::abc()
I’m Bidule::abc() // Va appeler « $this->def(); » (où $this ne pointe vers aucune instance de Bidule)…
I’m Machin::def() // Pas de « Fatal error: Using $this when not in object context ». A la place on a appelé Bidule::def() !
[/quote]
Qu’en pensez-vous ?
Il me semble qu’on « remonte à l’appelant » (la classe Machin).

bizarre l’appel à une méthode non static via :: est impossible normalement, non ? :o


Enfin, il cherche à effectuer la méthode sur l'instance de l'objet en cours, hors il n'y a aucune instance d'où l'erreur, et même si il remonterais la pile d'appel, il n'y a pas d'objet de crée il est incapable de trouve un objet sur le quel appeler la méthode
et vu que c'est normalement une méthode static (Sinon l'appel par :: est pas possible, avec le typage de php il doit s'en foutre) mais dans une méthode static tu peut pas utilise de $this ou quoi que ce sois du genre. Uniquement des MyClass:: ou alors un $myObj-> sur un objet passé en paramétre ou instancié dans la méthode. Edité le 14/08/2008 à 01:31

Erreur quand on utilise sans static quand toutes les erreurs sont report :


Strict Standards: Non-static method Bidule::abc() should not be called statically, assuming $this from incompatible context in /home/pyr/public_html/Morceaux%20de%20codes/Clubic/Raynor/test.php on line 15

roblin.no-ip.com…
Il affiche bien le Machin::def() :confused:
Edité le 14/08/2008 à 01:41

Preums :hello:

deuz :smiley:

ya du relachement ces derniers temps :smiley:

Une méthode étant fondamentalement de classe (car n’utilisant pas $this) devrait effectivement être déclarée static mais PHP autorise ce genre d’entorse.
Cela dit, vu que ma méthode utilise bien $this, il devrait me sortir une « Fatal error: Using $this when not in object context ».

Mets le niveau d’erreur à E_STRICT.

C’est normal que ça marche puisque ce comportement était accepté en PHP4.
Edité le 14/08/2008 à 10:23

C’est ton français qui est pas strict on dirait :smiley:

/taunt

grumph

bien envie d’éditer ton message, hé.

Puis c’est bien de relever ça, mais je te ferais remarquer que le tien n’est pas mieux:

Non, parce ce que sans le « n’ », ça ne veut rien dire!

tss!

la virgule est parfaitement facultative, accessoirement moi je code pour que ca marche sur IE hein :stuck_out_tongue:

Ce message n’était pas conforme aux règles d’utilisation du nouveau forum :

BAN !

Preum’s :o

Suppot de l’empire :o [:shy]

jore :smiley:

La virgule, peut-être, mais pas le « n’ », de même que le « ç » de ça :slight_smile:

:o Fais pas ton rageux sans-nom :smiley:

hu hu ,)