Overloading

Salve amici, sto tentando di capirci un po' di più di OOP in PHP5. Così, armato di buona volontà, sto traducendo le pagine del manuale on line purtroppo ancora in inglese, ma andiamo al punto.

Dunque i metodi di overloading secondo il Manuale

...will only be triggered when your object or inherited object doesn't contain the member or method you're trying to access.

Lanciati dunque quando l'oggetto non contiene il membro o il metodo a cui tento di accedere.

Guardando l'esempio in http://www.php.net/manual/it/language.oop5.overloading.php mi pare di capire che __get, __set e compagnia vengano chiamati "to run custom code defined in your class" quando si tenta di accedere a proprietà o metodi privati a cui normalmente non si potrebbe accedere fuori dalla classe.

Nel senso che sono privati l'oggetto non contiene il membro o il metodo a cui tento di accedere giusto?

Devo intendere in questo modo il termine overload cioè "sovraccarico"?

 :bye:

inviato 10 anni fa
usecram
X 0 X

L'overloading è quella caratteristica di alcuni linguaggi secondo cui è possibile utilizzare una determintata funzionalità in diversi modi, in fuzione del contesto, ottenendo diversi risultati.

Esempio di overloading di funzioni (impossibile per PHP senza usare qualche trucchetto):

somma("ciao ","mondo") restituisce "ciao mondo"

somma(1,2) restituisce 3

all'atto dell'esecuzione del codice viene richiamata la "versione" della funzione somma in grado di operare con le stringhe (primo caso) o con gli interi (secondo caso). La funzione somma è sovraccaricata.

Esempio con gli operatori (PHP lo implementa ma non permette di modificarne il comportamento)

"ciao" + " mondo" = "ciao mondo"

1 + 2 = 3

l'operatore "+" si comporta differentemente se i suoi addendi sono stringhe o numeri.

Chiarito il concetto di sovraccarico torniamo a PHP. I metodi "magici" __GET e __SET permettono, attraverso l'uso di espedianti, di ottenere effetti di overloading anche in PHP:

http://www.phpnews.it/tips-tricks/php/simulare-overloading/

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ah ecco che significa overloading, ora mi sembra abbastanza chiaro, chiarissimi la spiegazione teorica e l'esempio che mi hai segnalato.

Oltre a ringraziarti come sempre vorrei prendere spunto da questo thread per fare una proposta.

So già che ti hanno chiesto di scrivere su OOP ( http://www.phpnews.it/forum/index.php?topic=35.0 ) e che il tempo per farlo è piuttosto esiguo.

Però a me (direi un utente abbastanza medio) è bastato leggere una pagina del manuale, avere una breve spiegazione ed un esempio un po' più legato alla realtà per farmi un'idea moooolto più chiara.

E se ti inviassi le traduzioni del manuale online e tu aggiungessi un po' del tuo (soprattutto esempi e qualche breve frase chiarificatrice), l'effetto dell'articoletto che ne verrebbe fuori non sarebbe lo stesso per un milione di utenti con le mie identiche esigenze?

Come in cinque minuti hai risposto al mio post in dieci o quindici minuti potresti imbastire l'articoletto. Breve tempo di preparazione, massimo interesse degli utenti. Allo stato attuale nemmeno il panorama librario italiano dà un supporto completo (ho trovato un libro decente che tratta PHP e OOP ma in certi frangenti carente negli esempi), quindi secondo me potrebbe essere un'iniziativa valida e soprattutto attuabile.

Volendo si potrebbe fare una cosa analoga per le novità introdotte con MySQL 5 per le quali ho trovato le stesse difficoltà.

Che ne pensi Gianni?

risposto 10 anni fa
usecram
X 0 X

Ti rispondo in PM

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda