phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

Tabelle annidate e funzioni OO.

Area di discussione relativa al linguaggio di programmazione web più conosciuto. Il forum è dedicato anche a MySQL, la piattaforma di database più utilizzata con il PHP.
BMercer
Utente
Utente
Messaggi: 205
Iscritto il: 02/09/2009, 12:28
Versione: 3.0.6
Server: UNIX/Linux

Re: Tabelle annidate e funzioni OO.

Messaggio da BMercer » 04/04/2010, 13:25

Allora mettiamo che esiste questo file:
common.php contiene la classe "sqlmanager" per la connessione.

Codice: Seleziona tutto

include('common.php');

class unaclasse
{
   public function prima()
   {
       $db = new sqlmanager;
       $db->open() // apre la connessione
       // operazioni, varie + query
   }

   public function seconda()
   {
       $db = new sqlmanager;
       $db->open() // apre la connessione
       // operazioni, varie + query
   }

   public function terza()
   {
       $db = new sqlmanager;
       $db->open() // apre la connessione
       // operazioni, varie + query
   }

   public function quarta()
   {
       $db = new sqlmanager;
       $db->open() // apre la connessione
       // operazioni, varie + query
   }
}
 
Come faccio a fare in modo che, senza istanziare ogni volta la classe sqlmanager, ogni funzione possegga un istanza della classe sqlmanager?

Avatar utente
Carlo
Amministratore
Amministratore
Messaggi: 9957
Iscritto il: 19/04/2009, 10:24
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 7.1.0
Database: MySQL(i) 10.0.27-MariaDB-cll-lve
Località: Puglia
Contatta:

Re: Tabelle annidate e funzioni OO.

Messaggio da Carlo » 04/04/2010, 16:25

Scusa, ma tu usi le funzioni della classe sqlmanager all'interno di un'altra, dico bene?
MODs | Stili | Traduzioni MOD
Ogni MP contenente una richiesta di supporto verrà ignorato.

BMercer
Utente
Utente
Messaggi: 205
Iscritto il: 02/09/2009, 12:28
Versione: 3.0.6
Server: UNIX/Linux

Re: Tabelle annidate e funzioni OO.

Messaggio da BMercer » 04/04/2010, 19:18

Si

Avatar utente
Carlo
Amministratore
Amministratore
Messaggi: 9957
Iscritto il: 19/04/2009, 10:24
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 7.1.0
Database: MySQL(i) 10.0.27-MariaDB-cll-lve
Località: Puglia
Contatta:

Re: Tabelle annidate e funzioni OO.

Messaggio da Carlo » 04/04/2010, 20:11

Potresti fare così. Sostituisci:

Codice: Seleziona tutto

class unaclasse
con:

Codice: Seleziona tutto

class unaclasse extends sqlmanager
e poi usi le funzioni di sqlmanager con l'oggetto $this.
MODs | Stili | Traduzioni MOD
Ogni MP contenente una richiesta di supporto verrà ignorato.

BMercer
Utente
Utente
Messaggi: 205
Iscritto il: 02/09/2009, 12:28
Versione: 3.0.6
Server: UNIX/Linux

Re: Tabelle annidate e funzioni OO.

Messaggio da BMercer » 04/04/2010, 20:13

Quella classe è meglio poterla istanziare e eliminare facilmente con un $db = NULL.
Se viene ereditata non posso eliminarla.

Avatar utente
Carlo
Amministratore
Amministratore
Messaggi: 9957
Iscritto il: 19/04/2009, 10:24
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 7.1.0
Database: MySQL(i) 10.0.27-MariaDB-cll-lve
Località: Puglia
Contatta:

Re: Tabelle annidate e funzioni OO.

Messaggio da Carlo » 04/04/2010, 20:19

Allora, dovresti dichiarla come una variabile a livello della classe. Per esempio questo era il tuo codice:

Codice: Seleziona tutto

include('common.php');

class unaclasse
{
   public function prima()
   {
       $db = new sqlmanager;
       $db->open() // apre la connessione
       // operazioni, varie + query
   }

   public function seconda()
   {
       $db = new sqlmanager;
       $db->open() // apre la connessione
       // operazioni, varie + query
   }

   public function terza()
   {
       $db = new sqlmanager;
       $db->open() // apre la connessione
       // operazioni, varie + query
   }

   public function quarta()
   {
       $db = new sqlmanager;
       $db->open() // apre la connessione
       // operazioni, varie + query
   }
} 
Questo invece sarebbe il risultato:

Codice: Seleziona tutto

include('common.php');

class unaclasse
{
   public function connessione()
   {
       $this->db = new sqlmanager;
       $this->db->open(); // apre la connessione
       // operazioni, varie + query
   }

   public function seconda()
   {
       // operazioni, varie + query
   }

   public function terza()
   {
       // operazioni, varie + query
   }

   public function quarta()
   {
       // operazioni, varie + query
   }
} 
MODs | Stili | Traduzioni MOD
Ogni MP contenente una richiesta di supporto verrà ignorato.

Rispondi

Torna a “PHP - MySQL”

Chi c’è in linea

Visitano il forum: Nessuno e 77 ospiti