2016-03-03 108 views
6

這裏是我的類圖實施laravel面向對象的設計

class diagram

實現類是顯示在下面

人類

class Person 
{ 
    public $name='person' 

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

學生類

class Student Extends Person 
{ 
    public $studentNumber; 

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

教授類

class Professor Extends Person 
{ 
    public $salary; 

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

我想要實現這些類在laravel

控制器在等laravel MVC模式框架,笨來自因此在這些框架不能創建控制器基本控制器延伸爲每個類並從父類繼承?

它的問題我遇到

+1

這些都是在Laravel,不控制器.. –

+4

模型,它聽起來就像你是通過MVC架構的性質有點困惑。雖然不是針對拉拉維爾的,但[this](http://123code.co.uk/view/Resources/mvc-what-the-hell-is-it-and-why-should-i-use-it)可能會有所幫助解釋一下。 – DevDonkey

+0

@ Matei Mihai laravel 5沒有模型文件夾 那麼我們把模型 –

回答

0

的想法是當開發涉及到一個框架,他/她開始根據框架的角度編碼,並認爲如何實現OOD方法?

那麼,你仍然可以實現你正在努力實現的東西。在你的app目錄中,你可以創建一個目錄,稱之爲「類」(或任何你喜歡的)。開始像往常一樣創建你的類(添加適當的名稱空間,如在這種情況下,app\Classes),並且一切都應該沒問題。

確保將目錄添加到autoloadcomposer.json

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

由於它是一個PHP類,添加這也

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

然後運行composer dump-autoload。現在,您可以像往常一樣在控制器中使用您的自定義類(不要忘記use App\Classes\className;)。這應該做到這一點。

2

你似乎對此沒有什麼困惑,可能不想研究應用程序如何使用MVC體系結構進行編碼。

現在來回答,你還沒有提到,如果你想堅持這些類到數據庫或不。如果您不想將它們保存到數據庫,請參閱上述答案。在你想要的地方定義你想要的類,並像使用任何其他語言一樣使用它們。

另一方面,您可能想要將這些類保存到數據庫中,然後您想要將這些類定義爲模型。創建一個人基礎模型並從那裏擴展其他人。

您不需要爲每個控制器創建單獨的控制器,只需創建儘可能多的控制器即可。您可以使用一個或多個控制器的上述一個或全部模型。

0

您可以通過在codeigniter的核心文件夾中創建人員類並使用CI_Controller擴展它,然後使用任何類擴展person類來實現此目的。

這是你的個人類將如何看起來像:

類Person擴展是CI_Controller {

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

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

}

現在將文件保存到笨的核心文件夾中。您還需要在cofig文件中指定sub_class前綴。 Codeigniter會自動加載核心文件夾中的文件。

+0

他要求LARAVEL,而不是codeigniter – azngunit81

1

這取決於你想如何去做。

你可以簡單地定義一個常見的東西的特徵,並使用它,就像你將如何處理一個類。

此外,你將不得不處理名稱間距以及如果它變得複雜。

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

    }   
}