2016-03-03 8 views
6

hier ist mein Klassendiagrammobjektorientiertes Design in Laravel

class diagram

Umsetzung der Klassen zeigen in unter

Person Klasse

class Person 
{ 
    public $name='person' 

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

Schüler-Klasse implementieren

class Student Extends Person 
{ 
    public $studentNumber; 

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

Professor Klasse

class Professor Extends Person 
{ 
    public $salary; 

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

ich diese Klassen in Laravel

Controller in MVC-Muster-Frameworks wie Laravel implementieren möchten, codeigniter sind von Basissteuerung erstreckt sich daher in diesen Rahmen nicht-Controller erstellen für jede Klasse und erben, dass von der Elternklasse?

es ist das Problem, das ich habe

+1

Dies sind Modelle in Laravel, nicht-Controller .. –

+4

es klingt wie Sie ein wenig verwirrt durch die Natur einer MVC-Architektur. Obwohl dies nicht auf Laravel abzielt, könnte [dies] (http://123code.co.uk/view/Resources/mvc-what-the-hell-is-it-and-why-should-i-use-it) helfen erkläre es. – DevDonkey

+0

@ Matei Mihai Laravel 5 haben keine Ordner für Modelle dann, wo wir Modelle setzen –

Antwort

0

Die Idee ist, wenn ein Entwickler mit einem Rahmen kommt, beginnt er/sie Codierung gemäß dem Rahmen Perspektive, und denkt, wie die OOD Methodik zu implementieren?

Nun, die Sache ist, Sie können immer noch implementieren, was Sie versuchen zu erreichen. In Ihrem Verzeichnis app können Sie ein Verzeichnis erstellen, nennen Sie es "Klassen" (oder was auch immer Sie mögen). Beginnen Sie mit dem Erstellen Ihrer Klassen wie gewohnt (fügen Sie den richtigen Namespace hinzu, wie in diesem Fall app\Classes), und alles sollte in Ordnung sein.

Stellen Sie sicher, das Verzeichnis zu autoload in composer.json

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

hinzufügen Da es eine PHP-Klasse ist, fügen Sie diese auch

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

Und dann composer dump-autoload laufen. Jetzt können Sie Ihre benutzerdefinierte Klasse wie gewohnt im Controller verwenden (vergessen Sie nicht use App\Classes\className;). Das sollte es tun.

2

Sie scheinen dort wenig verwirrt, möchten vielleicht wenig darüber lernen, wie Anwendungen mit MVC-Architektur codiert sind.

Nun zur Antwort, Sie haben nicht erwähnt, wenn Sie diese Klassen in der Datenbank beibehalten möchten oder nicht. Wenn Sie sie nicht in der Datenbank speichern möchten, sehen Sie sich die obige Antwort an. Definieren Sie Ihre Klassen, wo Sie möchten, und verwenden Sie sie wie in jeder anderen Sprache.

Auf der anderen Seite möchten Sie möglicherweise diese Klassen in der Datenbank beibehalten, dann möchten Sie diese Klassen als Modelle definieren. Erstellen Sie ein Personenbasismodell und erweitern Sie die anderen von dort.

Sie müssen nicht für jeden einzelne Controller erstellen, erstellen Sie einfach so viele Sie benötigen. Sie können eines oder alle der oben genannten Modelle von einem oder mehreren Controllern verwenden.

0

Sie können dies tun, indem Sie Ihre Person Klasse im zentralen Ordner von codeigniter und erweitern Sie es mit CI_Controller und erweitern Sie dann Person Klasse mit jeder Klasse. Diese

ist, wie Sie Ihre Person Klasse wird wie folgt aussehen:

Klasse Person erstreckt CI_Controller {

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

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

}

nun Ihre Datei in codeigniter Kern Ordner speichern. Sie müssen in der Datei cofig auch das Präfix sub_class angeben. Codeigniter lädt automatisch die Datei, die sich im Hauptordner befindet.

+0

er fragt nach LARAVEL, nicht codeigniter – azngunit81

1

Es hängt davon ab, wie Sie darüber gehen wollen.

Sie können einfach ein Merkmal mit den üblichen Dingen definieren und es genau so verwenden, wie Sie es mit einer Klasse tun würden.

Auch wenn es kompliziert wird, müssen Sie auch mit Namen-Abstand beschäftigen.

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(){ 

    }   
} 
Verwandte Themen