Debug: Class not found

Ciao

ultimamente sto mettendo mano ad un Open Source per Ecommerce che lavora con dei moduli.

Nel cercare di capire qualcosa riguardo alla loro struttura, mi sono detto: Vabbeh facciamo il debug di uno semplice semplice cosi rispolvero anche quelle discrete conoscenze di PHP che ho.

Il modulo in questione incomincia con una classe estesa cosi:

class psmFooter extends Module ecc.....ecc.....

ma già qui sta il problema perchè all'atto del debug ottengo subito questo messaggio:

Fatal error: Class 'Module' not found in C:\Server Wamp\htdocs\BB_PS\modules\psmfooter\psmfooter.php on line 6

eppure il file Module.php esiste, e lo ho spostato anche dentro la cartella dove risiede il psmFooter che volevo debuggare, ma niente da fare.

Mi aspettavo anche di aprire il file Module.php e trovarci dentro la class Module, in realtà trovo:

abstract class ModuleCore

cos'è che non capisco o cos'è che sbaglio? Non devono avere lo stesso nome ?

Ahhhhhhhh ovviamente se lancio questo modulo all'interno della sua applicazione, sia in locale, che in remoto funziona benissimo :)

Grazie per un eventuale suggerimento

un saluto

Paolo

inviato 5 anni fa
antares
X 0 X

Non puoi cercare nei file la stringa "Model"? Troppo facile?

risposto 5 anni fa
Massimiliano Arione
X 0 X

Sarcastico ?

..............sento una leggerissima presa per il C... :D

Se non avevi voglia di rispondere potevi fare a meno (senza cattiveria)

Comunque Module non Model....Module  :)

Paolo

risposto 5 anni fa
antares
X 0 X

Be' scusami, ma ogni domanda merita una risposta corrispondente.

Alla fine l'hai trovato il file?

risposto 5 anni fa
Massimiliano Arione
X 0 X

Ma dai Garak,

secondo te se lo avessi trovato, avrei scritto qui ? Mi sono armato pure di un software per la ricerca di testi all'interno dei file. E poi cosa c'è nella domanda che non ti piace ? Non mi sembra di aver fatto una richiesta cosi stupida. Ad ogni modo proverò a rifare una ricerca.

E comunque come avevo scritto, il file Module.php esiste solo che dentro non c'è la class Module, per questo ho sollevato dubbi.

Infatti quello che mi piacerebbe tanto sapere, è com'è che fa a funzionare ?

Non c'è qualche possibilità che questa classe venga in qualche modo creata all'occorrenza, magari prendendo come copia proprio la abstract class ModuleCore che guarda caso risiede dentro al file Module.php?

Perchè questa Module è quella che fa girare tutto. Ogni "modulo" ha come riga di codice iniziale class FaccioLaPizza extends Module; class LancioUnFormat extends Module; ecc.........quindi alla fine sono sicuramente io che non afferro il concetto.

Ti dirò anche che per essere sicuro che il debugger funzioni, mi sono scritto due piccole Classi di cui una è la extends dell'altra, cosi per verificare se funzionassero.........e funzionano a patto di inserire un include dentro una classe altrimenti stesso errore. Eppure questi moduli non hanno nessun include, ma funzionano.

Bah sono un pò confuso. Vedrai che alla fine sarà una cavolata di quelle a cui non si pensa mai.

Ad ogni modo se hai suggerimenti......!?!?!? :)

Grazie

Paolo

risposto 5 anni fa
antares
X 0 X

Le classi possono anche essere caricate automaticamente con il meccanismo dell'autoload (anzi, si dovrebbe sempre fare così, l'include fa molto anni '90).

Aggiungo che non c'è nessun vincolo sulla coincidenza tra i nomi delle classi e i nomi dei file che le contengono, è solo una convenzione.

Se installi l'estensione xdebug puoi avere delle indicazioni molto utili sulla catena delle inclusioni dei file.

risposto 5 anni fa
Massimiliano Arione
X 0 X

Cavolo sull'editor che uso di solito non riesco ad installare xdebug, però ho scoperto che un'altro editor lo ha integrato, ma non ottengo informazioni diverse rispetto al messaggio che ti ho scritto.

Ad ogni modo Garak, per il momento lasciamo perdere, perchè ho il sospetto che non si possa debuggare tanto facilmente in quanto questi moduli dovrebbero anche essere "installati" e se lanci il loro codice php in modo diretto attraverso il server, compaiono sulla pagina solo i testi del codice e qualche box.

Quindi non si sviluppa come ti aspetteresti quando lanci un "normale" file php,anche se la procedura di installazione dovrebbe potere essere debuggata.

Ho contattato uno che scrive questi moduli, vediamo se mi risponde :), semmai ti farò sapere.

A meno che tu non abbia altre idee, per il momento ti ringrazio.

Un saluto

Paolo

risposto 5 anni fa
antares
X 0 X

Rettifico :)

ho installato XDebug, ma non aggiunge molto di più sul messaggio class non found se non :Notice: Undefined variable: _COOKIES in dbg_eval() on line 1 .

Bye

Paolo

risposto 5 anni fa
antares
X 0 X

Devi abilitare xdebug anche sul server...

risposto 5 anni fa
Mario Santagiuliana
X 0 X

Ciao MarioS

in che modo devo abilitarlo sul server ?

Dalla procedura di installazione di Xdeug non serve altro che copiare la dll sul Server e mettere il puntamento sul file php.ini. :)

bye

Paolo

risposto 5 anni fa
antares
X 0 X

Allora forse è abilitato, controlla con il phpinfo.

risposto 5 anni fa
Mario Santagiuliana
X 0 X

Penso di si :)

Ho fatto l'istallazione direttamente dal sito Xdebug seguendo la procedura automatizzata :)

Cavolo non lo trovo nel phpinfo, ma in effetti quando faccio il debug mi da un poco di fastidio con tutte quelle form arancioni :) E' lui vero?

bye

Paolo

risposto 5 anni fa
antares
X 0 X

Si è lui!

Vedrai che ti ritornerà utile! Come fare anche un debug riga per riga con alcuni script. Senza xdebug non potresti...

risposto 5 anni fa
Mario Santagiuliana
X 0 X

Grazie Mario

però sono rimasto ugualmente al punto di prima quando non avevo Xdebug.

Io credo che sia la struttura di questi moduli che non permette il debug.

Faccio prima a chiedere : C'è qualcuno che sviluppa moduli per Prestashop ?

Prima o poi ci arrivo eh :)

bye

Paolo

risposto 5 anni fa
antares
X 0 X

Non ho mai programmato per petrashop.

Questi errori però li risolvi con un debug "comune". Gli errori che ritornano dicono che non trova un certo modulo, sei sicuro che esiste questa classe?

Altro suggerimento: prendi un modulo di petrashop già esistente, dacci una letta e tenta di capire come fa a caricare le varie classi.

risposto 5 anni fa
Mario Santagiuliana
X 0 X

Mario

adesso è quasi più una curiosità che una necessità sapere come funziona, cavolo ho scritto pure a Prestashop, ma figurati se mi rispondono.

Adesso come tu avrai sicuramente letto, nonostante le mie discrete conoscenze di programmazione, diciamo che di php sono un programmatore della Domenica :), quindi sicuramente mi sfugge qualcosa e magari farò anche una figura di ...... per non aver visto o preso in considerazione qualcosa di estremamente facile.

Ad ogni modo in tutti i moduli esistenti (compreso quello a cui facevo riferimento) cominciano con estendere la classe Modulo e nonostante abbia spulciato tutti i file, questa classe non la trovo.

C' è da dire che questi moduli devono essere installati per funzionare, ma comunque il codice di installazione è ben oltre la prima riga di estensione della classe (quella che da errore), eppure tutti i moduli caricati su Prestashop funzionano. Ecco perchè a questo punto sono curioso.

Deve per forza succedere qualcosa durante il caricamento dei moduli.

Solo una cosa non ho provato a fare, provare a debuggare direttamente i file dal server, ma sinceramente è una cosa che non ho mai fatto e non so nemmeno se posso configurare l'IDE per poterlo fare.

Vabbeh intanto grazie per il supporto :)

ci si sente

bye

Paolo

risposto 5 anni fa
antares
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda