2016-03-03 6 views
6

qui è il mio diagramma delle classiimplementare progettazione orientata agli oggetti in laravel

class diagram

attuazione delle classi sono spettacolo in seguito

classe persona

class Person 
{ 
    public $name='person' 

    public function speak() 
    { 
     echo 'person speek' 
    } 
} 

classe studente

class Student Extends Person 
{ 
    public $studentNumber; 

    public function learn() 
    { 
     echo 'learn'; 
    } 
} 

classe Professor

class Professor Extends Person 
{ 
    public $salary; 

    public function teach() 
    { 
     echo 'teach'; 
    } 
} 

voglio implementare queste classi in laravel

controllori nei quadri pattern MVC come laravel, codeigniter sono estende dal controller di base quindi in tali quadri non possono creare controllori per ogni classe ed eredita quella dalla classe genitore?

è il problema che sto avendo

+1

Si tratta di modelli in laravel, non Controller .. –

+4

suona come si è un po 'confuso dalla natura di un'architettura MVC. Sebbene non sia rivolto a Laravel, [questo] (http://123code.co.uk/view/Resources/mvc-what-the-hell-is-it-and-why-should-i-use-it) potrebbe aiutare spiegalo. – DevDonkey

+0

@ Matei Mihai laravel 5 non hanno una cartella per i modelli quindi dove mettiamo i modelli –

risposta

0

L'idea è quando uno sviluppatore tratta di un quadro, lui/lei inizia la codifica a seconda della prospettiva quadro, e pensa come implementare la metodologia OOD?

Bene, il problema è che puoi ancora implementare ciò che stai cercando di ottenere. Nella tua directory app, puoi creare una directory, chiamarla "classi" (o qualsiasi altra cosa tu voglia). Inizia creando le tue classi come al solito (aggiungi lo spazio dei nomi corretto, come in questo caso app\Classes) e tutto dovrebbe essere ok.

Assicurarsi di aggiungere la directory al autoload in composer.json

"autoload": { 
    "files": [ 
     "App/Classes/className.php" 
    ] 
} 

Trattandosi di una classe PHP, aggiungere questo anche

"autoload": { 
    "psr-4": { 
     "MyApp\\": "app/" 
    }, 
}, 

E quindi eseguire composer dump-autoload. Ora puoi usare la tua classe personalizzata nel controller come al solito (non dimenticare use App\Classes\className;). Questo dovrebbe farlo.

2

Sembra poco confuso, potrebbe voler studiare poco su come le applicazioni sono codificate con l'architettura MVC.

Ora alla risposta, non hai menzionato se vuoi mantenere queste classi nel database o no. Se non si desidera salvarli nel database, vedere la risposta sopra. Definisci le lezioni dove vuoi e usale come faresti in qualsiasi altra lingua.

D'altra parte si potrebbe voler mantenere queste classi nel database, quindi si desidera definire queste classi come Modelli. Crea un modello di base di una persona e estendi gli altri da lì.

Non è necessario creare controller separati per ciascuno, basta crearne il numero necessario. È possibile utilizzare uno o tutti i modelli sopra indicati da uno o più controller.

0

È possibile eseguire questa operazione rendendo la classe persona nella cartella principale di codeigniter ed estenderla con CI_Controller e quindi estendere la classe della persona con qualsiasi classe.

Questo è come la classe persona sarà simile:

classe Person estende CI_Controller {

function __construct() 
{ 
    parent::__construct(); 
} 
public $name='person' 

public function speak() 
{ 
    echo 'person speek' 
} 

}

Ora salvare il file nella cartella principale CodeIgniter. È inoltre necessario specificare il prefisso sub_class nel file cofig. Codeigniter carica automaticamente il file che si trova nella cartella principale.

+0

chiede LARAVEL, non codeigniter – azngunit81

1

Dipende da come lo vuoi fare.

Si può semplicemente definire un tratto con le cose comuni e usarlo proprio come si farebbe con una classe.

Inoltre, dovrai affrontare anche la spaziatura dei nomi se diventa complicato.

http://php.net/manual/en/language.oop5.traits.php

trait PersonTrait { 
    public $name ='Mr. Awesome'; 

    public function speak(){ 

    } 
} 

class Student { 
    use PersonTrait; 

    public function learn(){ 

    } 
} 

class Professor { 
    use PersonTrait; 

    public function teach(){ 

    }   
}