Php 需要的建议:名称空间应用程序Laravel的项目结构

Php 需要的建议:名称空间应用程序Laravel的项目结构,php,laravel,namespaces,Php,Laravel,Namespaces,我正在开发一个应用程序,它有两个文件夹 比方说 App/Http/Users/和 App/Http/Drivers/ 我有两个api路由设置api.php和dapi.php。 路由的前缀也分别为localhost/api/foo和localhost/dapi/bar 一切正常,但问题是有一些方法我需要为两者调用。例如保存地址信息或呼叫。现在我必须为两者制作相同的控制器,并复制大量代码。这类项目的最佳方法是什么 您应该使用 Traits是单继承语言中代码重用的一种机制 比如PHP。一种特质是为了减

我正在开发一个应用程序,它有两个文件夹

比方说

App/Http/Users/
App/Http/Drivers/

我有两个api路由设置
api.php
dapi.php
。 路由的前缀也分别为
localhost/api/foo
localhost/dapi/bar

一切正常,但问题是有一些方法我需要为两者调用。例如保存地址信息或呼叫。现在我必须为两者制作相同的控制器,并复制大量代码。这类项目的最佳方法是什么

您应该使用

Traits是单继承语言中代码重用的一种机制 比如PHP。一种特质是为了减少单身的一些限制 继承,使开发人员能够在中自由地重用方法集 几个独立的类生活在不同的类层次结构中。这个 特征和类组合的语义是以某种方式定义的 这降低了复杂性,并避免了相关的典型问题 具有多重继承和混合

例如:

在你的背叛中:

    trait SameMethods {
        function call() { /*1*/ }
        function saveAddress() { /*2*/ }
    }

现在控制器上有了这些方法

另一种方法是使用另一个类,例如从控制器扩展的ParentController,该类包含相同的方法,并从该类扩展foo和bar

ParentController extends Controller {
    function call() { /*1*/ }
    function saveAddress() { /*2*/ }
}


啊好的。我必须使用单独的控制器来控制招摇和其他事情,但这些特性就像一个魅力。谢谢。我很高兴我的回答对你有帮助
namespace App\Http\Users;

        class Bar extends Controller{
            use SameMethods ;
            /* ... */
        }
ParentController extends Controller {
    function call() { /*1*/ }
    function saveAddress() { /*2*/ }
}
namespace App\Http\Drivers;

        class Foo extends ParentController {

            /* ... */
        }
namespace App\Http\Users;

        class Bar extends ParentController {

            /* ... */
        }