PHPackages                             kickpeach/mdcalls - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. kickpeach/mdcalls

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

kickpeach/mdcalls
=================

A package that addresses dependencies and modular services that support singleton invocation, RPC invocation, and any framework that USES composer

1311PHP

Since Jun 10Pushed 6y ago1 watchersCompare

[ Source](https://github.com/KickPeach/mdCalls)[ Packagist](https://packagist.org/packages/kickpeach/mdcalls)[ RSS](/packages/kickpeach-mdcalls/feed)WikiDiscussions master Synced 2d ago

READMEChangelogDependenciesVersions (1)Used By (1)

mdCalls
=======

[](#mdcalls)

mdCalls，module calls的简写，是一个解决依赖以及单例调用的模块化服务的package,支持rpc调用以及任意使用composer的框架使用，帮助模块化组织各种服务逻辑，让服务间调用方式更加同意

平常使用调用其他服务的方式
-------------

[](#平常使用调用其他服务的方式)

- new 创建

new UserService(),导致同个类被实例化多次，占用内存

- 依赖注入

虽说有容器可以解决依赖问题，但是在一些不支持容器的框架中也只能使用new 方式来创建。

mdcalls模块化
----------

[](#mdcalls模块化)

mdcalls提供了一种新的选择，每个模块都会实例化一次，每个模块的服务提供唯一的入口暴露给调用方，每个模块之间可以划分各种子模块，模块可以调用子模块的来完成业务逻辑。

例如:

```
    $ret = $this->mdc->User->setInfo('seven',24);
```

使用方法
====

[](#使用方法)

安装
--

[](#安装)

```
composer require kickpeach/mdcalls -vvv
```

mdCalls源码解析
-----------

[](#mdcalls源码解析)

```
src根文件夹
├── MdCallsService.php		MdCallsService服务类
├── Basic/
│   └── MdCallsBasic.php	MdCalls基类
└── Exceptions/
    └── MdCallsException.php MdCalls异常类

```

代码是不是很简单呢，只有三个文件，看懂了这三个文件，也差不多就可以很好的使用模块化了

[MdCallsService](https://github.com/KickPeach/mdCalls/blob/master/src/MdCallsService.php)提供单例入口并且自动加载模块并调用，并返回模块实例对象

[MdCallsBasic](https://github.com/KickPeach/mdCalls/blob/master/src/Basic/MdCallsBasic.php)加载服务子类

[MdCallsException](https://github.com/KickPeach/mdCalls/blob/fee1ca39eb7b548b7b7430c82ee4d52e739b34a5/src/Exceptions/MdCallsException.php)简单抛出异常

编写模块化服务
-------

[](#编写模块化服务)

- 参考例子

请见[这里](https://github.com/KickPeach/mdCalls/tree/master/tests/mdcalls)

- 目录结构

```
mdcalls 根文件夹
├── MdCalls.php				入口类
├── Basic/					文件夹
│   └── MdCallsBasic.php				服务基类
└── Service/				Service文件夹，包括所有的服务模块
    └── User/			    服务模块1：User模块
        └── UserIndex.php	服务模块入口
        ├── Child/			模块子类文件夹
        │   └── UserInfo.php	模块子类
    └── Message/			服务模块2：Message模块
        ├── Child/
        │   └── MessageList.php
        └── MessageIndex.php

```

- 入口类`php MdCalls.php`

```
