Visualizzazione dei risultati da 1 a 3 su 3

Discussione: namespace in mvc

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2017
    Messaggi
    12

    namespace in mvc

    Salve, ho un piccolo progetto realizzato in MVC e stavo cercando di implementare i namespace.

    Da questo controller dovrei richiamare la classe utente che sta nella cartella app/modelli. Senza namespace funziona, ma quando cerco di implementarlo non riesco a farlo funzionare. Sapete aiutarmi? Ho provato a inserire i vari use ect, ma niente
    codice:
    class Controllore {
       
        public function modello($modello){
          
          require_once '../app/modelli/' . $modello . '.php';
          
          return new $modello();
        }
    }
    codice:
    namespace app\modelli;
    class Utente {
    ....

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,500
    Se usi i namespace va anche cambiato il modo di istanziare un oggetto (ovviamente fuori dal suo namespace), dovendogli specificare il namespace a cui appartiene.
    Ad esempio, per la tua classe app\modelli\Utente, nel controllore
    Codice PHP:
    $utente app\modelli\Utente();

    oppure

    use app\modelli as modelli;
    ...
    $utente modelli\Utente();

    oppure

    use app\modelli\Utente;
    ...
    $utente = new Utente(); 
    Nel tuo caso, visto che, te li carichi in modo dinamico ti conviene fare così:
    Codice PHP:

    public function modello($modello){
      require_once 
    '..app/modelli/'.$modello.'.php';
      
    $class 'app\modelli\'.$modello;
      return $class();

    Detto ciò, se fossi in te, valuterei l'utilizzo dell'autoloading di php. Tra l'altro ci sono diverse implementazione già fatte che seguono degli standard (PSR-4 o PSR-0)

  3. #3
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,500
    piccolo errore ...ovviamente è return new $class();

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2019 vBulletin Solutions, Inc. All rights reserved.