<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之旅 廣告
                事件 1\. 事件和中間件有一點相似,只不過事件更加的精準定位更細膩的業務場景; 2\. 事件可定義:事件類、事件監聽類、事件訂閱類; 3\. 我們先創建一個測試事件的類:TestEvent.php,手動創建一個測試類; ``` `public``function __construct()` `{` `//注冊監聽器` `Event::listen(``'TestListen'``, function ($param) {` `echo``'我是監聽器,我被觸發了!'``.$param;` `});` `}` `public``function info()` `{` `echo``'登錄前準備!'``;` `Event::trigger(``'TestListen'``,``'ok'``);``//觸發監聽器` `event``(``'TestListen'``);``//助手函數觸發` `}` ``` 4\. 我們也可以使用監聽類來設計監聽器,使用命令行創建; ``` `php think make:listener TestListen` `public``function info()` `{` `echo``'登錄前準備!'``;` `Event::listen(``'TestListen'``, TestListen::``class``);``//這句可以定義到配置文件` `Event::trigger(``'TestListen'``);` `}` ``` 5\. 在 app/event.php 中,listen 是配置監聽類的,配置方式如下: ``` `'listen'``=> [` `'TestListen'``=> [\app\listener\TestListen::``class``]` `],` ``` 6\. 而監聽類被觸發會自動執行 handle()方法,實現監聽功能; ``` `public``function handle($``event``)` `{` `echo``'我是監聽類!'``.$``event``;` `}` ``` 7\. 系統還內置了系統觸發的事件,只要滿足條件就會自動觸發; ![](https://img.kancloud.cn/4f/db/4fdb708489da8ec1f3816df22dd9a8b1_684x281.png) 事件描述參數AppInit應用初始化標簽位無HttpRun應用開始標簽位無HttpEnd應用結束標簽位當前響應對象實例LogWrite日志write方法標簽位當前寫入的日志信息RouteLoaded路由加載完成無 8\. 事件監聽類,可以同時監聽多個監聽類,只要綁定到一個標識符即可; ``` `'TestListen'``=> [` `\app\listener\TestListen::``class``,` `\app\listener\TestOne::``class``,` `\app\listener\TestTwo::``class` `]` ``` 9\. 對于需要多個監聽,監聽類不夠靈活,而且類會創建很多,可以使用訂閱類; 10\. 訂閱類就是將監聽事件作為內部的方法用 on+方法名來實現; ``` `php think make:subscribe UserSub` `class``UserSub` `{` `public``function onUserLogin(){` `echo``'處理登錄后的監聽!'``;` `}` `public``function onUserLogout(){` `echo``'處理退出后的監聽!'``;` `}` `}` ``` 11\. 然后,我們直接去 app/event.php 注冊一下; ``` `'subscribe'``=> [` `'UserSub'``=> \app\subscribe\UserSub::``class``,` `],` ``` 12\. 然后,兩個方法分別監聽兩個事件方法,直接調用方法名即可; ``` `public``function login(){` `echo``'登錄成功!'``;` `Event::trigger(``'UserLogin'``);` `}` `public``function logout(){` `echo``'退出成功!'``;` `Event::trigger(``'UserLogout'``);` `}` ``` 13\. 對于事件類,很少有場景需要使用它,畢竟系統提供的各種精確方案較多; ``` `php think make:``event``UserEvent` `class``UserEvent` `{` `public``function __construct()` `{` `echo``'我是事件類!'``;` `}` `}` `Event::trigger(``new``UserEvent());` ``` 多應用模式 1\. 由于多應用模式屬于擴展,我們需要額外安裝; ``` composer require topthink/think-multi-app ``` 2\. 安裝后,創建 index 和 admin 兩個應用目錄文件夾; 3\. 只要將 controller 和 model 移入即可,修改相應的命名空間; 4\. 將 view 也增加 index 和 admin 兩個應用目錄文件夾,移入相應文件夾; 5\. 默認的應用為 index,在 app.php 修改即可; ``` `// 默認應用` `'default_app'``=>``'index'``,` ``` 6\. 我們可以做應用映射,比如將 admin 目錄映射為 think,admin 廢棄; ``` `// 應用映射(自動多應用模式有效)` `'app_map'``=> [` `'think'``=>``'admin'` `],` ``` 7\. 我們也可以做域名綁定,比如,后臺用域名綁定,直接訪問; ``` `// 域名綁定(自動多應用模式有效)` `'domain_bind'``=> [` `'news.abc.com'``=>``'admin'``,` `'*'``=>``'index'` `],` ``` 8\. 路由修改:需要在應用目錄單獨建立路由,內部編碼不需要更改;
                  <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>

                              哎呀哎呀视频在线观看