2016-03-03 96 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(){ 

    }   
}