Codeigniter-4View-视图.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Codeigniter 4.0-dev 版源码学习笔记之七—— View 视图 前言 CI 的 View 没有像 Laravel 等一些流行框架一样设计的那么重,有自己的一套模版机制, CI 一直采用纯天然的 PHP 模板形式,纯天然的好处是不用再学习一套模板语言了,缺点 是不能用到一些便利的设计模式,比如不能使用继承布局等等,当然你也可以加第三方的视 图组件进来。 下面我们开始看源码,看源码,我们先从视图的调用开始。 视图的调用 CI 4 开始使用新的视图调用逻辑,不在是 load 形式,调用方式如下: echo view (name); 可以看到是直接调用了一个 view 函数,这个函数我们既不需要提前 load ,在 construct 方法里也没看见 include 什么文件,同时,这个方法看起来又不属于控制器对象,那么它 是从哪里来的呢? 回到之前写的“之二——入口以及初始化操作”一节,里面提到了,在 bootstrap.php 74 行 (原始文件行号),require 了一下 BASEPATH.Common.php ,这个文件中定义了许 多辅助方法。 view 就是其中一个,该方法位于 system/common.php 中的 88 行(原始 文件行号)。下面把代码贴出来: if (! function_exists(view)) { function view (string $name, array $data = [], array $options = []) { $renderer = Services::renderer(); $saveData = null; if (array_key_exists(saveData, $options) $options[saveD ata] === true ) { $saveData = (bool)$options[saveData]; unset($options[saveData]); } return $renderer-setData($data, raw) -render($name, $options, $saveData); } } 可以看到,这里调用了 Services 类的 renderer 静态方法。之后的 saveData 逻辑主要处 理多次调用 view 方法时是否共享视图变量以及最后把要传递给视图的数据变量通过 $renderer-setData 方法传递给 render ,最后又执行了 render 进行渲染视图。下面贴出 的是 Services::renderer() 源码(system/config/services.php:362 ): public static function renderer($viewPath = APPPATH.Views/, $config = null, $getShared = true) { if ($getShared) { return self ::getSharedInstance(renderer, $viewPath, $confi g); } if (is_null($config)) { $config = new \Config\View(); } return new \CodeIgniter\View\View($config, $viewPath, self ::locat or(true ), CI_DEBUG, self ::logger(true )); } 可以看出, view 方法主要 new 了一个 CodeIgniterViewView 类,该类位于 /system/ViewView.php 下。 小结一下,给个分析过程图,以方便理解: 接下来就是我们的主角 View 了。 View 源码分析 按着以上图中流程,我们要看 View 类的三个关键方法,分别是 __construct 、setData 、 render 。 __

文档评论(0)

js1180 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档