classe nuova variabile membro

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
ilovephp
Prode Principiante
Messaggi: 51
Iscrizione: lunedì 12 febbraio 2007, 14:20
Località: treviso
Contatti:

classe nuova variabile membro

Messaggio da ilovephp »

Per aggiungere una variabile membro in una classe, posso usare il seguente codice ?

Codice: Seleziona tutto

$this->nuovavariabile=' valore ';


thanks
Avatar utente
Markon
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1536
Iscrizione: mercoledì 17 gennaio 2007, 10:34
Località: Sperone Beach(AV)
Contatti:

Re: classe nuova variabile membro

Messaggio da Markon »

Non sono un esperto di php, ma alla fine la sintassi è simile ad altri linguaggi.

Allora...ammettiamo che tu hai una classe "Klass". Nel costruttore e/o in una funzione membro (o metodo, come vuoi) PUOI usare il codice che hai postato.
All'esterno dei metodi puoi dichiarare/definire la variabile senza il "this->" e nei metodi puoi riferirti ad essa con "$this->".

Spero di essere stato chiaro.
Ciao
My Guitar Wants to Kill your Mama!

DIVENTA PYTHONEER
Avatar utente
garak
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1649
Iscrizione: lunedì 13 giugno 2005, 13:37
Desktop: Gnome
Distribuzione: Ubuntu 24.04
Sesso: Maschile
Località: Roma
Contatti:

Re: classe nuova variabile membro

Messaggio da garak »

ilovephp ha scritto: Per aggiungere una variabile membro in una classe, posso usare il seguente codice ?

Codice: Seleziona tutto

$this->nuovavariabile=' valore ';

thanks
php è abbastanza flessibile da consentirtelo, purché la variabile non sia stata già dichiarata privata.
Però sarebbe meglio se prima dichiarassi tale variabile:

Codice: Seleziona tutto

<?php
class pippo
{
   public $nomevariabile;
   private $nomealtravariabile;
}
Avatar utente
Markon
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1536
Iscrizione: mercoledì 17 gennaio 2007, 10:34
Località: Sperone Beach(AV)
Contatti:

Re: classe nuova variabile membro

Messaggio da Markon »

Però sarebbe meglio se prima dichiarassi tale variabile:
Non ne vedo l'utilità.
Puoi spiegarmi quale sarebbe il vantaggio?

Ciao
My Guitar Wants to Kill your Mama!

DIVENTA PYTHONEER
Avatar utente
daemon_nio
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1012
Iscrizione: lunedì 15 gennaio 2007, 14:18
Sesso: Maschile
Località: London
Contatti:

Re: classe nuova variabile membro

Messaggio da daemon_nio »

Markon ha scritto:
Però sarebbe meglio se prima dichiarassi tale variabile:
Non ne vedo l'utilità.
Puoi spiegarmi quale sarebbe il vantaggio?

Ciao
Il primo vantaggio è che chi userà in futuro il tuo codice sa che quella classe ha quell'attributo... e non è poco.

Inoltre la cosa migliore è dichiarare gli attributi privati (quindi inaccessibili in questo modo) e di creare le relative funzioni di set e di get per quell'attributo.
Sempre costruendo qualcosa di nuovo: Matag: The Game
Avatar utente
Markon
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1536
Iscrizione: mercoledì 17 gennaio 2007, 10:34
Località: Sperone Beach(AV)
Contatti:

Re: classe nuova variabile membro

Messaggio da Markon »

Il primo vantaggio è che chi userà in futuro il tuo codice sa che quella classe ha quell'attributo... e non è poco.
Inoltre la cosa migliore è dichiarare gli attributi privati (quindi inaccessibili in questo modo) e di creare le relative funzioni di set e di get per quell'attributo.
E' proprio questo il fatto.
Se la variabile non deve essere un attributo o non pubblica, non vedo perchè renderla pubblica.
Insomma, se io ho delle classi con attributi che allo sviluppatore che dovrà usare il mio codice non saranno utili, non vedo perchè perderci tempo.
Le variabili dichiarate all'esterno del costruttore sono "statiche" se così vogliamo dire, accessibili all'esterno della classe.
Non hai bisogno di istanziare la classe per accedere all'attributo "statico" diciamo.
Se non si tratta di un attributo realmente importante per la progettazione della tua interfaccia, insomma, se si tratta di un attributo che non serve a una ceppa, non vedo perchè dichiararlo fuori alla classe.

Sono del parere che dichiarare le variabili all'interno della classe, accessibili SENZA istanziare la classe (nell'esempio di garak è praticamente la variabile $nomevariabile), sia spesso di difficile comprensione, ma si tendano a dichiarare quante più variabili possibili in quel modo, mandando a quel paese l'OOP.

PS: non sono pratico di PHP, ma penso che grossomodo le cose dovrebbero essere le stesse che in C++.
Ciao
My Guitar Wants to Kill your Mama!

DIVENTA PYTHONEER
Avatar utente
garak
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1649
Iscrizione: lunedì 13 giugno 2005, 13:37
Desktop: Gnome
Distribuzione: Ubuntu 24.04
Sesso: Maschile
Località: Roma
Contatti:

Re: classe nuova variabile membro

Messaggio da garak »

Markon ha scritto: Le variabili dichiarate all'esterno del costruttore sono "statiche" se così vogliamo dire, accessibili all'esterno della classe.
Non hai bisogno di istanziare la classe per accedere all'attributo "statico" diciamo.
Se non si tratta di un attributo realmente importante per la progettazione della tua interfaccia, insomma, se si tratta di un attributo che non serve a una ceppa, non vedo perchè dichiararlo fuori alla classe.
Se hai bisogno di variabili statiche, devi usare un'altra sintassi.
Innanzitutto devi dichiarare che sono statiche

Codice: Seleziona tutto

public static $nomevariabile = 'pippo';
(ovviamente vale anche con private invece di public)
e poi le devi richiamare per forza di cose senza usare $this

Codice: Seleziona tutto

NomeClasse::nomevariabile;
Se poi invece di una variabile ti serve una costante di classe, puoi anche dichiararne una.
Infine, se proprio la variabile non ti serve a niente (o a "una ceppa", come dici tu), è inutile che la dichiari tanto quanto è inutile che la usi  :)
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 5 ospiti