首页
导航
博客
电子书
算法
众创
代码
随贴
关于我们
您好,欢迎来到码863代码分享网! 请
[登录]
/
[注册]
搜 索
标题:
*
140
字
TAG标签:
(用空格隔开)
30
字
恢复历史版本:
请选择分类
html
python
javascript
php
sql
c
c++
c#
java
plain
所有人可见
仅自己可见
编辑器:UEditor
编辑器:TinyMCE
编辑器:Editor.md
HTML转MD
HTML转MD2
<p><br/><span style="box-sizing: border-box; outline: 0px; font-weight: 700; overflow-wrap: break-word; color: rgb(77, 77, 77); font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; background-color: rgb(255, 255, 255);">容器的功能<span style="color: rgb(77, 77, 77); font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; font-weight: 700; background-color: rgb(255, 255, 255);">实例一次多次调用</span>,绑定函数:<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word; color: rgb(243, 59, 69);">bind()</span>——快速调用类库</span><span style="color: rgb(77, 77, 77); font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; background-color: rgb(255, 255, 255);">,</span><span style="box-sizing: border-box; outline: 0px; font-weight: 700; overflow-wrap: break-word; color: rgb(77, 77, 77); font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; background-color: rgb(255, 255, 255);"> <span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word; color: rgb(243, 59, 69);">app()</span>——助手函数,对已绑定的类,快速实例化 </span></p><pre class="brush:php;toolbar:false">// 绑定类库标识 绑定类名与Closure到app->$bind 实例到app->$instances 调用时根据情况去实例化 $this->app->bind('Cache1', 'think\Cache');//$this->app同app() //服务类中bind数组 $this->app->cache1='think\Cache';//通过container()->__set实现 $this->app['cache1']='think\Cache'; app()->cache1='think\Cache'; app()['cache1']='think\Cache'; bind('cache2', 'think\Cache');//助手函数 //实例 参考上面 $cache1 = app('Cache1'); $cache1 = app()->Cache1;//通过container()->__get实现 //调用方法 $cache1->set('name','12313'); app('Cache1')->set('name','12313'); //输出 echo $cache1->get('name'); //结果 12313</pre><p><br/></p><p><span style="color: rgb(77, 77, 77); font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; background-color: rgb(255, 255, 255);">批量绑定(app/provider.php)只支持全局,不能单独定义。</span></p><pre class="brush:php;toolbar:false">return [ 'route' => \think\Route::class, 'session' => \think\Session::class, 'url' => \think\Url::class, ];</pre><p><span style="box-sizing: border-box; outline: 0px; font-weight: 700; overflow-wrap: break-word; color: rgb(77, 77, 77); font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; background-color: rgb(255, 255, 255);">服务:指执行框架的某些组件或者功能的时候需要依赖的一些基础类库(如session,cache等)</span><span style="background-color: rgb(255, 255, 255); color: rgb(77, 77, 77); font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun;">应用中定义的服务先系统服务register,可以直接在应用的register()中做验证码输出,缓冲输出,<span style="color: rgb(77, 77, 77); font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; background-color: rgb(255, 255, 255);">虽然违背服务初衷但</span>节省性能</span></p><p><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; background-color: rgb(255, 255, 255); color: rgb(243, 59, 69);">register</span><span style="color: rgb(77, 77, 77); font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; background-color: rgb(255, 255, 255);">方法,用于框架启动之前,将服务绑定到容器中(提前加载好需要的类库),也可在服务bind中给定,在/app下定义应用服务<span style="color: rgb(77, 77, 77); font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; background-color: rgb(255, 255, 255);">/app/AppService.php</span></span></p><pre class="brush:php;toolbar:false"><?php declare (strict_types = 1); namespace app; use think\Service; /** * 应用服务类 */ class AppService extends Service { //如果只是bind,也可以bind数组取代register public function register()//可选 { $this->app->bind('session1', \think\Session::class); } public function boot() { // 服务启动 可选 } }</pre><p><span style="color: rgb(77, 77, 77); font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; background-color: rgb(255, 255, 255);"></span>框架通过/app/service载入应用服务</p><pre class="brush:php;toolbar:false">use app\AppService; // 系统服务定义文件 // 服务在完成全局初始化之后执行 return [ AppService::class,//php内部转换成串'app\AppService'; 等同于'app\AppService' ];</pre><p><span style="color: rgb(77, 77, 77); font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; background-color: rgb(255, 255, 255);"></span>服务载入流程 先应用服务regiser(把AppService实例化到app->services[])->系统服务register()->按register顺序boot()</p><p><br/></p><p><br/></p><p style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; white-space: normal; background-color: rgb(255, 255, 255); line-height: 26px !important;"><span style="box-sizing: border-box; outline: 0px; font-weight: 700; overflow-wrap: break-word;">1、中间件是什么?</span><br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;"/>主要用于拦截或过滤应用的<code style="box-sizing: border-box; outline: 0px; border-radius: 4px; overflow-wrap: break-word;">HTTP</code>请求。 新版部分核心功能使用中间件处理,你可以灵活关闭。包括Session功能、请求缓存和多语言功能。</p><p style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; white-space: normal; background-color: rgb(255, 255, 255); line-height: 26px !important;"><span style="box-sizing: border-box; outline: 0px; font-weight: 700; overflow-wrap: break-word;">2、多应用模式下中间件分类:</span></p><p style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; white-space: normal; background-color: rgb(255, 255, 255); line-height: 26px !important;">全局中间件->应用中间件->路由中间件->控制器中间件</p><p style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; white-space: normal; background-color: rgb(255, 255, 255); line-height: 26px !important;"><br/></p><p style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; white-space: normal; background-color: rgb(255, 255, 255); line-height: 26px !important;"><span style="box-sizing: border-box; outline: 0px; font-weight: 700; overflow-wrap: break-word; color: rgb(77, 77, 77); font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; background-color: rgb(255, 255, 255);">事件</span></p><p style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; white-space: normal; background-color: rgb(255, 255, 255); line-height: 26px !important;"><span style="color: rgb(82, 82, 82); font-family: Georgia, "Xin Gothic", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei", sans-serif; font-size: 17px; background-color: rgb(255, 255, 255);">事件先通过listen定义或bind,然后通过<span style="color: rgb(56, 58, 66); font-family: "Source Code Pro", "DejaVu Sans Mono", "Ubuntu Mono", "Anonymous Pro", "Droid Sans Mono", Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, "PingFang SC", "Microsoft YaHei", sans-serif; font-size: 14px; white-space: pre; background-color: rgb(250, 250, 250);">trigger调用,</span>系统可以看成是</span><code style="box-sizing: inherit; -webkit-tap-highlight-color: transparent; text-size-adjust: none; -webkit-font-smoothing: antialiased; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 17px; display: inline-block; border-radius: 4px; padding: 2px 6px; background: rgb(249, 250, 250); word-break: break-all; white-space: pre; line-height: 1.3; margin: 0px 5px; border: 1px solid rgb(222, 217, 217); color: rgb(82, 82, 82);">5.1</code><span style="color: rgb(82, 82, 82); font-family: Georgia, "Xin Gothic", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei", sans-serif; font-size: 17px; background-color: rgb(255, 255, 255);">版本行为系统的升级版</span></p><p>1、通过监听事件,进行类的调用。(观察者模式)<br/></p><pre class="brush:php;toolbar:false">//手动创建app\listenter文件目录,文件夹里面创建事件监听类 Event::listen('UserLogin', 'app\listener\UserLogin');//手动监听 或 'listen' => [ //事件定义文件中监听 /app/event.php 'AppInit' => [], 'HttpRun' => [], 'HttpEnd' => [], 'LogLevel' => [], 'LogWrite' => [], 'UserLogin'=>['app\listener\UserLogin'] ], //事件监听类的写法 <?php namespace app\listener; class UserLogin { public function handle($user) { echo 'UserLogin'; } }</pre><p><span style="box-sizing: border-box; outline: 0px; font-weight: 700; overflow-wrap: break-word; color: rgb(77, 77, 77); font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; background-color: rgb(255, 255, 255);">2、通过触发器,进行事件调用</span></p><pre class="brush:php;toolbar:false"><?php namespace app\controller; use app\BaseController; class Index extends BaseController { public function index() { event('UserLogin');//等同Event::trigger('UserLogin'); return '';</pre><p><span style="box-sizing: border-box; outline: 0px; font-weight: 700; overflow-wrap: break-word; color: rgb(77, 77, 77); font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; background-color: rgb(255, 255, 255);">3、事件订阅 <span style="color: rgb(77, 77, 77); font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; font-weight: 700; background-color: rgb(255, 255, 255);">触发</span>应该是同上</span><br/></p><pre class="brush:php;toolbar:false">//通过命令生成订阅类,默认生成app\subscribe\User类 php think make:subscribe User //监听事件的方法命名规范是on+事件标识 <?php namespace app\subscribe; class User { public function onUserLogin($user) { // UserLogin事件响应处理 } public function onUserLogout($user) { // UserLogout事件响应处理 } }</pre><p><span style="color: rgb(82, 82, 82); font-family: Georgia, "Xin Gothic", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei", sans-serif; font-size: 17px; background-color: rgb(255, 255, 255);">然后在事件定义文件注册事件订阅者</span></p><pre class="brush:php;toolbar:false">return [ 'bind' => [ 'UserLogin' => 'app\event\UserLogin', // 更多事件绑定 ], 'listen' => [ 'UserLogin' => ['app\listener\UserLogin'], // 更多事件监听 ], 'subscribe' => [ 'app\subscribe\User', // 更多事件订阅 ],];</pre><p><br/></p>
CopyRight 2002~2023 精通2100网 联系邮箱:qqtxt@163.com
版权所有:精通2100网
湘ICP备2023018646号-1
MYSQl共执行 4 个查询,用时 0.0034241676330566 秒,PHP脚本用时 0.006164 秒,占用内存 0.628 MB,Gzip 已启用