Remember me - Lost password?
m3c__ : about 1 year ago
Vediamo se ho capito bene. L'argomento riguarda la OOP in PHP:

Se ho una costante, è una costante e ciccia. Per accedervi vado su nomeClasse::costante.

Se ho una proprietà, è come se fosse una normale variabile. Per accederci devo fare un istanza e poi andare di $this->$proprietà.

Se ho una proprietà statica, vi accedo come se fosse una costante ma è il suo contenuto è variabile.

A che pro avere quest'ultima situazione ibrida?mi sono dato una letta a questa pagina: http://www.redchar.net/?x=entr... e lui usa le proprietà statiche per definire costanti ed accedervi comodamente.

E' solo una questione di comodità?ma a questo punto perché mettere un dato costante in un contenitore potenzialmente variabile come una proprietà statica?usa direttamente una costante e fine, no?

Che differenza c'è fra proprietà e proprietà statiche?solo il metodo d'accesso?

E fra proprietà statiche e costanti?solo che una è variabile e una è costante?

Abbiate pazienza, sono studi nuovi e sono un inevitabile rompiballe
from nato a Locarno - vivo a Pantelleria in php oop - 2 replies
JustB : about 1 year ago
Vediamo se posso aiutarti a fare chiarezza.
La programmazione a oggetti è semplicemente una descrizione di un "micromondo". Una classe rappresenta uno "stampino" per un oggetto del micromondo.

Gli attributi (o proprietà) servono per descrivere lo stato in cui si trova un oggetto.
Le "proprietà di classe" (quelle static per intenderci) invece descrivono una proprietà comune a tutti gli oggetti di una classe.

Le costanti di classe invece sono semplicemente delle costanti che hanno un ambito di validità interno alla classe: invece di crearle con define('COST', VAL) le crei con la parola chiave const

Per fare un esempio pratico: immagina di dover creare un videogioco in cui ci sono dei mostri. Devi visualizzare il numero di mostri complessivo nel livello, la vita di ciascun mostro e la razza aliena a cui appartengono.


Il numero di mostri di quel tipo è una proprietà della classe di mostri
La vita rimanente è un attributo di un singolo mostro
Il nome della specie aliena potrebbe (ma anche no) essere salvato in una costante. Quindi verrebbe una cosa del genere:
code

class Mostro_Zurg
{
const SPECIE = 'Zurg';
private $vita = 100;
private static numeroMostri;

public function __construct() {
self::numeroMostri++;
}
//..altri metodi per gestire i mostri
}



Ovviamente, dato che il qualificatore static rende un attributo/metodo condiviso a tutti gli oggetti di una classe, non è possibile accedere agli attributi di un singolo oggetto. Ad esempio questo sarebbe un errore:
code

public static stampaVita()
{
echo $this->vita;
}

Questo perché il metodo stampaVita è richiamabile anche senza aver instanziato nessun oggetto Mostro_Zurg (quindi non esisterebbe alcuna vita da mostrare).

Per le costanti invece il discorso è diverso: sono solo delle costanti, solo definite all'interno di una classe, e puoi richiamarle da qualunque parte del codice, con o senza oggetti instanziati (cfr [l:http://www.php.net/manual/en/l... php: class constants])

E questa è solo la superficie: ci sarebbero da fare anche altre considerazioni sui vari qualificatori, ma forse mi sono dilungato troppo

Comunque se posso darti un consiglio (a me è servito): prova a leggere un libro su Java. Essendo l'Object Oriented un metodo obbligato in quel contesto (ed essendo i libri più precisi su terminologie e concetti) ho trovato la mia programmazione PHP migliorata dopo lo studio di quel linguaggio
from Sant'Antimo - NA - detail
m3c__ : about 1 year ago
Bella risposta, grazie se devo essere sincero ne ho capito la metà, spero che domani a mente fresca vada meglio
from nato a Locarno - vivo a Pantelleria - detail
New to meemi?
Join now to quickly and easily way

Problem? Rigenerate new code
By clicking the button, you agree all terms of service