多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
#创建服务 框架支持用户向系统中添加自动义服务。 文件与目录说明 * config/service.php 服务声明配置 * system/service 服务文件存放位置 ##操作 下面我们来演示一个服务的创建过程。 ###设置配置项 以下修改均在 config/Service.php文件中进行 声明服务提供者 ``` 在provider 数组中添加内容:system\service\form\FormServiceProvider, ``` ###创建文件 以下修改均在System/Service/Form目录中 1.创建 FormServiceProvider.php ``` <?php namespace system\Service\Form; use hdphp\kernel\ServiceProvider; class FormServiceProvider extends ServiceProvider{ //延迟加载 public $defer=true; public function boot() { } public function register() { $this->app->single('Form',function($app) { return new \System\Service\Form\Form($app); }); } } ``` 2.创建文件 Form.php ``` <?php namespace System\Service\Form; class Form { //构造函数 public function __construct() { } public function select(){ echo '恭喜你,服务创建成功'; } } ``` ##测试 经过以上操作服务就创建完成了,我们可以在控制器、路由器等任何位置使用服务了。 ``` <?php namespace Admin\Controller; use Hdphp\Controller\Controller; class IndexController extends Controller { public function index() { //使用App服务实例出Form服务,然后执行服务中的select方法 App::make('Form')->select(); } } ``` ##外观facade 默认使用服务是需要App::make()方法获取的,我们可以创建一个外观类来简化操作。 1.配置外观类,在Config/Service.php的facade数据后面添加: ``` 'Form' => 'System\Service\Form\FormFacade', ``` 2.在System/Service/Form目录创建 FormFacade.php 文件 ``` <?php namespace System\Service\Form; use Hdphp\Kernel\Facade; class FormFacade extends Facade { public static function getFacadeAccessor() { return 'Form'; } } ``` ###操作 当创建了外观后,我们就可以不使用 App::make()实例化服务了,直接使用服务类调用了。 ``` <?php namespace Admin\Controller; use Hdphp\Controller\Controller; class IndexController extends Controller { public function index() { //使用App服务实例出Form服务,然后执行服务中的select方法 Form::select(); } } ```