<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 系統服務 系統服務的概念是指在執行框架的某些組件或者功能的時候需要依賴的一些基礎服務,服務類通常可以繼承系統的`think\Service`類,但并不強制(如果繼承`think\Service`的話可以直接調用`this->app`獲取應用實例)。 你可以在系統服務中注冊一個對象到容器,或者對某些對象進行相關的依賴注入。由于系統服務的執行優先級問題,可以確保相關組件在執行的時候已經完成相關依賴注入。 ## 服務定義 你可以通過命令行生成一個服務類,例如: ~~~ php think make:service FileSystemService ~~~ 默認生成的服務類會繼承系統的`think\Service`,并且自動生成了系統服務類最常用的兩個空方法:`register`和`boot`方法。 ### 注冊方法 `register`方法通常用于注冊系統服務,也就是將服務綁定到容器中,例如: ``` <?php namespace app\service; use my\util\FileSystem; class FileSystemService extends Service { public function register() { $this->app->bind('file_system', FileSystem::class); } } ``` `register`方法不需要任何的參數,如果你只是簡單的綁定容器對象的話,可以直接使用`bind`屬性。 ``` <?php namespace app\service; use my\util\FileSystem; class FileSystemService extends Service { public $bind = [ 'file_system' => FileSystem::class, ]; } ``` ### 啟動方法 `boot`方法是在所有的系統服務注冊完成之后調用,用于定義啟動某個系統服務之前需要做的操作。例如: ``` <?php namespace think\captcha; use think\Route; use think\Service; use think\Validate; class CaptchaService extends Service { public function boot(Route $route) { $route->get('captcha/[:config]', "\\think\\captcha\\CaptchaController@index"); Validate::maker(function ($validate) { $validate->extend('captcha', function ($value) { return captcha_check($value); }, ':attribute錯誤!'); }); } } ``` `boot`方法支持依賴注入,你可以直接使用其它的依賴服務。 ## 服務注冊 定義好系統服務后,你還需要注冊服務到你的應用實例中。 可以在應用的全局公共文件`service.php`中定義需要注冊的系統服務,系統會自動完成注冊以及啟動。例如: ``` return [ '\app\service\ConfigService', '\app\service\CacheService', ]; ``` 如果你需要在你的擴展中注冊系統服務,首先在擴展中增加一個服務類,然后在擴展的`composer.json`文件中增加如下定義: ``` "extra": { "think": { "services": [ "think\\captcha\\CaptchaService" ] } }, ``` 在安裝擴展后會系統會自動執行`service:discover`指令用于生成服務列表,并在系統初始化過程中自動注冊。 ## 內置服務 為了更好的完成核心組件的單元測試,框架內置了一些系統服務類,主要都是用于核心類的依賴注入,包括`ModelService`、`PaginatorService`和`ValidateService`類。這些服務不需要注冊,并且也不能卸載。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看