2012-11-25 15 views
11

Sono molto nuovo a codeigniter, Volevo sapere qual è il significato di un costruttore in un controller. Ho visto il seguente codice in un tutorial CodeIgniter -CodeIgniter Controller Constructor

class upload extends CI_Controller { 

    function __construct() { 
     parent::__construct(); 
     $this->load->helper(form); 
    } 

    // rest of the class... 

La mia domanda è se è il costruttore invocato - (? Ad esempio la classe controller viene creata un'istanza per ciascuna richiesta ricevuta) è chiamato ogni volta che il regolatore serve una richiesta

+1

Potete provare voi stessi: basta 'var_dump (time())' nel costruttore e aggiornare la pagina per guarda cosa accadrà. La stringa di tempo scaricata cambierà all'aggiornamento della pagina, quindi significa che la classe viene creata un'istanza per ogni richiesta. – Melkor

risposta

13

Bene, questa è una domanda PHP più generale. Comunque, sì, il metodo magico __construct() viene chiamato (automaticamente) su ogni istanza della classe, come puoi vedere nel manuale: http://www.php.net/manual/en/language.oop5.decon.php

Di solito, in CI non è necessario chiamare un costruttore, a meno che tu non sia effettivamente ne voglio uno. Nell'esempio che hai postato, il codice carica l'helper su ogni istanza della classe, che equivale a caricare l'helper in ogni metodo, salva solo un sacco di digitazione e garantisce che non venga dimenticato. In alternativa puoi mettere la libreria/helper/modello che vuoi avere caricato nel rispettivo array di autoload in config/autoload.php (controlla "autoloading" nel manuale di CI)

Una volta definito un costruttore nel tuo Controller bambino tu essere obbligato a chiamare il costruttore genitore (della classe CI_Controller della posta), perché è dove viene creato l'oggetto CI principale e tutte le classi sono caricate, e anche quelle del controllore figlio; se non riesci a farlo, la tua classe figlia costruirà separatamente e non erediterà.

spero Mi sono spiegato, inglese non è la mia lingua madre :)

3

il costruttore è magia Letteralmente la sua chiamata un metodo magico. ciò che rende cool il costruttore è che farà le cose per te PRIMA di qualsiasi metodo. Pertanto, se si dispone di una classe di amministrazione e si deve accedere a qualcuno per poter accedervi, è possibile verificare l'accesso al costruttore e rimbalzarli se non sono autorizzati.

nel costruttore è possibile caricare i modelli, le librerie, gli helper, ecc. Di cui la classe ha bisogno e che saranno disponibili per qualsiasi metodo nella classe.

è possibile caricare le variabili utilizzate dai metodi. questo è veramente utile per i modelli.

+2

Il costruttore viene chiamato una sola volta quando la classe viene inizializzata o viene chiamata ogni volta che vengono chiamati i metodi all'interno del controller? – Prabhu

+0

@Prabhu una sola volta, a meno che non arrivi una nuova richiesta –

0

Non usare _construct() funzione nel ultimo apache & codeigniter

Usa helperlin in index() funzione

Problemi correlati