Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    curiosità: plugin oriented application

    Una domanda che mi son sempre posto, ma non ho ancora trovato una risposta che mi convinca davvero:

    come è organizzata una "applicazione" plugin oriented?

    Intendo dire, come funziona wordpress, per esempio? è scritto in php, ma il codice permette l'aggiunta di "parti" che modificano anche le pagine esistenti...
    Come fanno a modificare i codici di pagine statiche? Trovo strano che tornino indietro e giochino con le espressioni regolari (su pagine già mandate in output, tra l'altro!)....

    Come fanno? Anche farlo in anticipo, che so, includendo tutte le pagine in una certa directory con un ciclo o qualcosa di simile... mah, davvero, non ho idee! (e nemmeno voglia di guardarmi tutto il codice di wp...)

    Grazie a chi vorrà rispondere alle mie domande psicotiche...
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  2. #2
    quali pagine statiche? :master:

    le pagine vengono create dinamicamente, il plugin viene interpellato a un certo punto di questo processo di creazione per fare la sua parte.

    una tecnica molto comune e ragionevolmente semplice da realizzare è quella di sistema a eventi.
    L'applicazione base nei punti in cui vuole far sì che possano intervenire i plugin genera degli eventi. I plugin si "registrano" come gestori di quegli eventi in cui vogliono intervenire e in questo modo le due parti interagiscono tra loro.

    Butto giù un esempio semplice giusto per capire il meccanismo. Scrittura di un commento su un blog.
    L'applicazione base riceve il commento dal form, fa tutto ciò che deve fare e supponiamo che metta il contenuto nella variabile $comment.
    Poi fa qualcosa del genere:

    Codice PHP:
    $event = new Event('add_comment', array('postId' => $postId'commentBody' => $comment));
    EventManager::triggerEvent($event);
    $db->saveComment($event->postId$event->commentBody); 
    quindi l'applicazione solleva l'evento e poi va avanti.

    Da qualche altra parte (ovviamente eseguita prima) il plugin si sarà registrato in questo modo
    Codice PHP:
    EventManager::registerEventHandler(array('CommentPlugin''processComment'), 'add_comment'); 
    (cioè quando c'è un evento add_comment passalo alla callback specificata nel primo parametro).

    Quindi al triggerEvent l'EventManager passerà l'evento al CommentPlugin che si era già registrato per quel tipo di evento, questo magari al suo interno provvederà a eliminare dal campo "commentBody" gli URL considerati "SPAM" presi da una sua blacklist.
    Quindi l'evento con il campo modificato procederà il suo iter e verrà salvato nel database.

    In questo modo applicazione e plugin hanno interagito facilmente.

  3. #3
    wow non potevi essere più esauriente!
    Grazie mille, davvero!

    Credi che sia una pazzia sviluppare tutto senza oggetti?
    Comunque ora mi documento sugli eventi, immagino siano una branca piuttosto ampia del php che non conoscevo... Grazie ancora!
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  4. #4
    Originariamente inviato da iraiscoming223
    wow non potevi essere più esauriente!
    Grazie mille, davvero!

    Credi che sia una pazzia sviluppare tutto senza oggetti?
    Comunque ora mi documento sugli eventi, immagino siano una branca piuttosto ampia del php che non conoscevo... Grazie ancora!
    non esiste una gestione nativa degli eventi, in PHP, l'esempio che ti ho scritto io è un modello, e va chiaramente implementato a manina (nel senso che devi farti tu l'EventManager, le classi per gli eventi, per gli event handler, etc. etc.).

    Quanto al farlo senza oggetti, secondo me non ha granché senso, è molto più complicato e qualitativamente peggiore, però nulla te lo vieta.

  5. #5
    Originariamente inviato da skidx
    l'esempio che ti ho scritto io è un modello, e va chiaramente implementato a manina (nel senso che devi farti tu l'EventManager, le classi per gli eventi, per gli event handler, etc. etc.).
    Si si immaginavo va bene che il php è un bel linguaggio però... eheh

    Originariamente inviato da skidx
    Quanto al farlo senza oggetti, secondo me non ha granché senso, è molto più complicato e qualitativamente peggiore, però nulla te lo vieta.
    Eh, io con la OOP non vado molto d'accordo, se posso evito... grazie ancora cmq!
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  6. #6
    Originariamente inviato da iraiscoming223
    Eh, io con la OOP non vado molto d'accordo, se posso evito... grazie ancora cmq!
    Se posso darti un consiglio, prima di avventurarti sui design pattern, sistemi event-driven e applicazioni "plugin oriented" dedicati a imparare la OOP.

    Da sola è molto più basilare di tutte quelle altre cose messe assieme, e poi gran parte dei design pattern più usati sono basati su OOP, quindi diciamo che sarà un prerequisito per tutto il resto.

  7. #7
    Originariamente inviato da iraiscoming223
    Eh, io con la OOP non vado molto d'accordo, se posso evito... grazie ancora cmq!
    Se hai tempo da perdere, la cosa migliore che potresti fare è scrivere l'applicazione in modo procedurale e poi riscriverla ad oggetti, e successivamente riscriverla ad oggetti usando i design pattern. Se lo fai diventi un guru. Oppure diventi :berto: , una delle due opzioni

  8. #8
    Originariamente inviato da skidx
    Se posso darti un consiglio, prima di avventurarti sui design pattern, sistemi event-driven e applicazioni "plugin oriented" dedicati a imparare la OOP.
    Ok, credo che seguirò il tuo consiglio... So già programmare in OOP, ma non certo ad alti livelli, anzi! Credo che mi cercherò in giro qualche guida ben fatta (mi era sembrato di vederne una tra le pillole... :master: )...

    Originariamente inviato da giorgiosironi88
    Se lo fai diventi un guru. Oppure diventi :berto: , una delle due opzioni
    Perchè una delle due?! Sono mutuamente esclusive?!
    Ok, questo è un buon inizio...



    Grazie a tutti e due intanto!
    Finiti gli esami dell'università inizierò un mega ripassone!
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.