[RESOLU] Erreur Php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Erreur Php

Re: [RESOLU] Erreur Php

par stealth35 » 12 sept. 2010, 05:34

La fonction fonctionne Nickel sur le serveur de prod mais fait planter Apache chez moi !! Cela dit, ce n'est pas le premier à me le faire planter ... C'est qu'il est sensible !!
bizarre le plus souvent quand apache plante c'est un problème de mémoire au niveau de php

Re: [RESOLU] Erreur Php

par devlop78 » 12 sept. 2010, 01:31

La fonction fonctionne Nickel sur le serveur de prod mais fait planter Apache chez moi !! Cela dit, ce n'est pas le premier à me le faire planter ... C'est qu'il est sensible !!

Re: [RESOLU] Erreur Php

par devlop78 » 12 sept. 2010, 00:16

Je parlais d'un éventuel beug sur $$mavar::methode() pas sur les callback. Mais pas de beug comme montré précedemment.

Re: [RESOLU] Erreur Php

par stealth35 » 11 sept. 2010, 21:03

y'a pas de bug, c'est l'une des formes du type callback

Re: Erreur Php

par devlop78 » 11 sept. 2010, 20:57

Si j'ai bien compris la première réponse, j'ai trouvé l'origine du problème (fonctionnalité non implémentée dans la version 5.2).
J'essayerai ta fonction magique ^^. C'est un peu le bazarre n'empêche toutes ces fonctions d'appel de fonction (de callback comme on dirait en JS ou AS3).
Pour le moment je n'ai pas le temps de voir et je voulais surtout savoir pourquoi, car je n'aime pas avoir la sensation d'un "beug". Je suis trop habitué par Windows et j'attends mieux de Linux, Apache et PhP ^^

Je tiens au courant !

Re: Erreur Php

par stealth35 » 11 sept. 2010, 20:52

donc c'est ok ?

Re: Erreur Php

par devlop78 » 11 sept. 2010, 20:49

J'ai failli te dire que j'en doutais mais :

http://php.net/manual/fr/function.call-user-func.php

$classname = "maclasse";

call_user_func(array($classname, 'dit_bonjour'));
call_user_func($classname .'::dit_bonjour'); // Depuis 5.2.3

Ca m'arrangerait effectivement car je suis un amoureux du Singleton ... Ce qui est dommage (oui et non) car j'en suis tellement satisfait que je n'ai jamais essayé les autres Desing Patterns. Mais j'ai un code si fluide, des classes qui communiquent si bien entre elles ... c'est vraiment une superbe invention :lol: :lol: :lol: (j'ai pas trouvé le smiley Love ...)

Re: Erreur Php

par stealth35 » 11 sept. 2010, 20:44

et comme ca :
$plug = call_user_func($separators[0] . '::getInstance');

Re: Erreur Php

par devlop78 » 11 sept. 2010, 20:41

De toutes façons, c'est pas si mal, étant donné que tout ce code est actuellement coté Vue. Ca devrait être au Controlleur de s'occuper du chargement de la classe. C'est donc à revoir !

Re: Erreur Php

par devlop78 » 11 sept. 2010, 20:39

Donc, si je comprends bien, ce n'est pas "automatique". Car à l'époque du procédural (petit lol), $$mavar et $mafonction() fonctionnait très bien ... j'en ai donc conclu que cela fonctionnait donc toutes les circonstances (et chez moi ça marchait !). Donc, c'est un problème d'implémentation ...

Passer à php5.3 non pas possible, c'est un hébergeur mutualisé. Ce qui est dommage car je crois que le "bon" garbage collector n'est présent que depuis php5.3.

Ce qui est asssez drôle, c'est que :

if (class_exists($separators[0],false)) {
if (method_exists($separators[0],'getInstance')) {
if (method_exists($plug,$separators[1])){
$plug->$methode($decoupage);

fonctionnent ...

On serait donc dans un problème purement lié au static ??

Ca me fait penser ... pour palier au problèmen je pourrais directement faire un new $separators[0] (sans Singleton), en vérifiant au préalable dans la classe qui possède son instance qu'il n'existe pas. Mais là ... j'avais même pas à m'en préoccuper ..

Re: Erreur Php

par Ganesh » 11 sept. 2010, 10:13

Bonjour,

Comme l'indique l'erreur, ton problème vient de paamayim_nekudotayim, autrement dit l'opérateur de portée (::). L'explication de ton problème se trouve dans ton poste, la fonction forward_static_call() n'est pas définie parce que tu as une version inférieure à la 5.3. Or le référencement d'une classe en utilisant une variable n'est lui aussi possible qu'à partir de la version 5.3.

La solution, un peu lourde certes, est de passer par un switch... ou de migrer vers PHP5.3 si c'est possible.

[RESOLU] Erreur Php

par devlop78 » 11 sept. 2010, 02:43

Bonjour,

Voici une ligne qui fonctionne parfaitement chez moi (en local):

$plug = $separators[0]::getInstance(); //$separators[0] contient le nom d'une classe

Sur mon hébergement, j'ai une erreur

Parse Error unexpected t_paamayim_nekudotayim sur cette ligne qui bloque tout mon site.
J'ai donc cherché à appeler la méthode autrement, par :

$plug = forward_static_call(array($separators[0], 'getInstance'));

Cette ligne ne bloque plus le site, mais dans la page qui appelle le "module" (plug) :

Fatal error: Call to undefined function forward_static_call()

AhAh ... cette fonction n'existe que depuis php 5.3 ...

Bref ... quelqu'un a-t-il une solution pour appeler cette méthode statique de façon "dynamique" (en attendant, je n'ai qu'un plug, je peux donc mettre directement son nom, mais bon ...)

Merci