Quando si usa un metodo statico?
Quando si usa un metodo statico?
Cosa sarebbe? Vuoi dire $_POST, $_GET o altro?? Ciao!
In PHP hanno poco senso, perchè esistono le funzioni globali (come nel C)
In altri linguaggi, che sono completamente ad oggetti come per esempio il Java, sono utilizzate al posto delle funzioni per eseguire delle operazioni che non richiedono l'appartenenza ad un oggetto
Sono chiamate anche funzioni stand-alone o metodi di classe, nei linguaggi come il PHP si usano per motivi
puramente stilistici, non c'è secondo me nessun altro motivo che le renda utili
Be dipende.
Sono comunque funzioni legate alla classe che non necessitano dello stato dell'oggetto per funzionare.
L'utilità è che non devi creare l'oggetto (new) per usarle.
Mettiamo che tu hai un sistema con utenti, ed a ogni utente è assegnato un avatar.
Il file avatar è chiamato mettiamo con la concatenazione di ava_NOMEUTENTE.gif
Inizieresti facendo una classe utente con alll'interno la funzione getAvatar() che restituisce la gif.
Ma poi utilizzandola potresti trovarti con la lista di nome utente e la necessità di stampare i loro avatar.
Aggiungendo una funziione statica getAvatarStatica(nomeutente) (riutilizzata dalla getAvatar()) avresti l'avatar senza dover creare un istanza della classe Utente per ogni user.
"L'intelligenza è una pianta che va curata continuamente.
Dovreste vedere com'è bello, il mio bonsai."
Rat-man®
[Gradient Text]
[Su che server sei?]
->flickr
Da come lo hai scritto non è molto chiaro ma provo a cogliere cosa intendevi dire:
"Un metodo statico è come una funzione globale e in più può accedere alle variabili (e metodi) di istanza private "
È quello che intendevi tu?
In OOP un metodo statico può essere usato quando:
- non dipende dagli oggetti che rappresenta
- utilizza risorse che vengono condivise da tutti gli oggetti dello stesso tipo
Ti faccio un esempio concreto (il classico esempio da libri di testo di OOP): devi realizzare un sistema che permetta la gestione di conti correnti bancari, ciascun conto corrente ha un proprio numero (unico per ciascun conto) e un proprio saldo.
Alla creazione dell'oggetto "conto", inizializzerai opportunamente il suo saldo e il suo numero. Per il saldo non ci sono problemi, basta una semplice assegnazione, per il numero, invece, ti serve conoscere qual è stato l'ultimo numero che hai assegnato e dare al nuovo conto quel numero, aumentato di 1: quest'ultima operazione può essere svolta solo attraverso un metodo statico (e una variabile statica di supporto).
Statemi bene...
Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?
When you don't know your next step... improvise
ALTERVISTA WANTS YOU!
Vuoi diventare moderatore su AlterVista? Scopri come...
"L'intelligenza è una pianta che va curata continuamente.
Dovreste vedere com'è bello, il mio bonsai."
Rat-man®
[Gradient Text]
[Su che server sei?]
->flickr
Difficile che ciò avvenga senza snaturare il linguaggio stesso
L'attuale implementazione è la migliore perchè sembra una naturale estensione delle basi del linguaggio
Sono comunque d'accordo che l'uso di _call(), _get() e _set() sia parecchio confusionario se mischiato a definizioni di metodi e variabili reali