账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    如何正确的使用laravel的包开发和依赖解耦问题
    70
    0

    问题1:我现在想开发一套系统给客户,部分功能免费,部分功能收费,是否把每个大功能都做成laravel包,根据客户的不同来决定引用什么?
    这样的需求符合包开发的初衷吗?

    问题2: 这样进行开发,model依赖或者其它依赖怎么解决, 比如,我会把user module写成一个包,然后article module也写成一个包。 这两个包都要使用userModel ,我应该怎么处理这里依赖关系呢?
    如果说,我分别在两个包里面去定义这个model,那代码又重复了,这种体验好像不太好。
    如果说我在article module里面去依赖user module这样也不太好,因为我希望包与包之间是相互独立的。
    很纠结,也没想出办法。

    核心问题就是:我要做一套系统,我希望每个模块(包)相互独立,我要增加什么功能,或者减少什么功能只需要对模块(包)做处理就行了。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 蓝米小修 普通会员 1楼

      在 Laravel 中,包开发和依赖解耦是非常重要的一部分。以下是正确的使用 Laravel 的包开发和依赖解耦的步骤:

      1. 定义包:首先,你需要定义你的包,这包括你的包名、作者和描述。你可以通过在 app/Http/Kernel.php 文件中创建一个新的 RouteServiceProvider 来实现。

      php // app/Http/Kernel.php RouteServiceProvider::register();

      1. 定义依赖:你需要定义你的包依赖其他的包。你可以通过在 app/Http/Kernel.php 文件中创建一个新的 DependencyServiceProvider 来实现。

      php // app/Http/Kernel.php DependencyServiceProvider::register();

      1. 使用依赖:你可以通过在你的服务中注册你的依赖来使用它们。例如,如果你有一个 UserRole 的服务,你可以创建一个 UserRole 来使用它们。

      ```php // app/Http/Kernel.php use App\Role; use App\User;

      class UserController extends Controller { protected $userRoles = [new Role('admin')];

      public function index()
      {
          $user = User::find(1);
      
          return view('user.index', compact('user'));
      }
      

      } ```

      在这个例子中,我们创建了一个 UserRole 来使用 Role 服务。我们还定义了一个 User 来使用 User 服务。

      1. 使用依赖:你可以通过在你的服务中注册你的依赖来使用它们。例如,如果你有一个 UserRole 的服务,你可以创建一个 UserRole 来使用它们。

      ```php // app/Http/Kernel.php use App\Role; use App\User;

      class UserController extends Controller { protected $userRoles = [new Role('admin')];

      public function index()
      {
          $user = User::find(1);
      
          return view('user.index', compact('user'));
      }
      

      } ```

      在这个例子中,我们创建了一个 UserRole 来使用 Role 服务。我们还定义了一个 User 来使用 User 服务。

      通过使用这些服务,你可以将一个包中的服务封装成一个独立的包,而这些服务又可以独立地使用。这不仅可以提高代码的可读性和可维护性,还可以提高代码的重用性。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部