Vai al contenuto

Domanda su php


MACTHEBEST

Messaggi raccomandati

Ciao!

vorrei chiedere perchè in uno script del genere

$ciao = 'Ciao!';

class ClasseDiProva {

mostra_pagina();

}

function mostra_pagina() {

global $ciao;

echo $ciao;

}

all'interno della classe non viene considerata la variabile globale dichiarata da mostra_pagina()

l'esempio è fatto solo per rendere l'idea.... :)

Velox Fortis Letalis

Owner of Battlefield 1942, 2, 2: Special Forces, 2142, Bad Company

Link al commento
Condividi su altri siti

la variabile $ciao si trova fuori dalla classe e si differisce da quella che hai dichiarato di tipo global all'interno di mostra_pagina.

Teoricamente se dichiari la variabile $ciao (quella fuori dalla classe) di tipo global dovresti riuscire ad accedervi anche all'interno del metodo mostra_pagina a patto che rimuovi la dichiarazione della variabile all'interno del metodo stesso.

Link al commento
Condividi su altri siti

Grazie. :ghghgh:

altra domanda

class ClasseDiProva {

mostra_pagina();

}

function sub_mostra_pagina() {

global $ciao;

echo $ciao;

}

function mostra_pagina() {

$ciao;

sub_mostra_pagina();

}

In questo caso cosa dovrei cambiare?

altro esempio per rendere l'idea.... :ciao:

Velox Fortis Letalis

Owner of Battlefield 1942, 2, 2: Special Forces, 2142, Bad Company

Link al commento
Condividi su altri siti

function mostra_pagina() {

$ciao;

sub_mostra_pagina();

}

nelle tue intenzioni cosa dovrebbe fare quella (non-)istruzione "$ciao;" ?

se vuoi usare il valore di $ciao come parametro da visualizzare tramite sub_mostra_pagina allora il codice che stai tentando di scrivere è quanto meno naif :ghghgh:

io l'avrei scritto così:

function sub_mostra_pagina($mostra) {
   echo $mostra;
}

function mostra_pagina() {
  sub_mostra_pagina($ciao);
}

in generale però mi sembra che tu stia facendo un uso quantomeno confuso delle classi: normalmente una classe si usa per gestire informazioni che vengono in qualche modo "incapsulate" all'interno dalla classe stessa e tenute disaccoppiate dalle variabili globali.

nell'ambito della definizione di una classe non dovrebbero in generale comparire mai variabili di tipo globale. quando poi nel codice devi usare (un'istanza del)la classe per manipolare il valore di una variabile globale, il modo di gestire questa condizione è un altro.

Serve aiuto? Posso darti una mano in

Webmasters - Aiuto Software - Da Windows a Mac

Mappa Utenti ItaliaMac

[[miao]]

Link al commento
Condividi su altri siti

Il mio scopo non era niente di applicativo.

Era il comprendere meglio le classi... :)

Grazie per le risposte. Disponibili e gentili come sempre.

:D:fiorellino:

Velox Fortis Letalis

Owner of Battlefield 1942, 2, 2: Special Forces, 2142, Bad Company

Link al commento
Condividi su altri siti

Era il comprendere meglio le classi... :D

diciamo allora che il principio base della programmazione a oggetti è "disaccoppiare le informazioni tramite incapsulazione", tenendo sempre ben distinto il trattamento dei dati all'interno di un'istanza di una classe e il trattamento delle variabili globali.

di solito il meccanismo base di principio per manipolare le variabili globali è definire all'interno della classe una variabile locale che "copia" il valore della variabile globale per esempio tramite un'assegnazione o un metodo ad hoc, la classe poi esegue le sue manipolazioni e il risultato finale viene assegnato alla variabile globale tramite un altro metodo ad hoc.

a seconda del codice è possibile anche collassare il tutto in un unico metodo.

per esempio:

myClass.useString = $ciao;
$ciao = myClass.elaborateUseString();

ma anche

$ciao = myClass.capitalizeString($ciao);

myClass.displayString($ciao);

ecc.

Serve aiuto? Posso darti una mano in

Webmasters - Aiuto Software - Da Windows a Mac

Mappa Utenti ItaliaMac

[[miao]]

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...