在laravel中实现面向对象的设计

Sac*_*ias 6 php laravel

这是我的班级图

类图

类的实现如下所示

人类

class Person
{
    public $name='person'

    public function speak()
    {
        echo 'person speek'
    }
}
Run Code Online (Sandbox Code Playgroud)

学生班

class Student Extends Person
{
    public $studentNumber;

    public function learn()
    {
        echo 'learn';
    }
}
Run Code Online (Sandbox Code Playgroud)

教授班

class Professor Extends Person
{
    public $salary;

    public function teach()
    {
        echo 'teach';
    }
}
Run Code Online (Sandbox Code Playgroud)

我想在laravel中实现这些类

mvc模式框架中的控制器如laravel,codeigniter是从基本控制器扩展的,因此在那些框架中不能为每个类创建控制器并从父类继承它们?

这是我遇到的问题

Ash*_*her 0

这个想法是当开发人员来到一个框架时,他/她开始根据框架的角度进行编码,并思考如何实现OOD方法论?

好吧,问题是你仍然可以实现你想要实现的目标。在您的app目录中,您可以创建一个目录,将其命名为“classes”(或任何您喜欢的名称)。首先像往常一样创建类(添加适当的名称空间,就像在本例中一样app\Classes),一切都应该没问题。

确保将目录添加到autoloadincomposer.json

"autoload": {
    "files": [
        "App/Classes/className.php"
    ]
}
Run Code Online (Sandbox Code Playgroud)

因为它是一个 PHP 类,所以也添加它

"autoload": {
    "psr-4": {
        "MyApp\\": "app/"
    },
},
Run Code Online (Sandbox Code Playgroud)

然后运行composer dump-autoload。现在您可以像往常一样在控制器中使用自定义类(不要忘记use App\Classes\className;)。应该可以做到这一点。