laravel5.1 view的一些源代码研究

想要实现一个静态化的功能,在laravel只要用middlewareh+IO操作就可以很好的实现这个功能了。

但是,我想要实现一个php视图文件生成一个静态文件,这个有点类似laravel的view的compile了,但是laravel的compiel过程只是把blade语法解析成php语法了,如果我是框架作者的话,那我也不会去静态化一个view的。

先说下laravel的模板的解析文件的更新机制吧。上图。


然后看下isExpired函数的实现


laravel的更新使用的是它的filesystem

这里补充一下编译后的php文件的名称的由来, 也是花了我一点时间的。


我自己的测试结果是可以的。
然后问题就来了

这里我也写入文件,写入文件中的内容是view中的php代码被执行完的,是完整的HTML代码。

但是吧, 我得到了两个文件,一个文件是页面中显示的。一个文件的内容是空白的, 我也不知道为什么呢。


这一段代码就是执行被编译后的php代码的, 这一段代码很好的。

laravel还是挺难的。

PS:如果你没在view里面输出数据,而在其他地方输出数据的话,那么上面我写入的文件的中内容不会包含该数据。

PS:更新上面一句,ob_start();可以让echo的stringhold住。
PS:这里的include 的文件是blade解析之后的文件,一般在这个文件中会调用render方法,这是一个小递归,最终还会运行到这里的。在我自己的实验中view.php中render方法会调用至少两次(如果你使用blade的php引用了另一个blade文件的话)

未完待续。

posted @ 2015-11-14 17:47  祥子爱游戏  阅读(283)  评论(0)    收藏  举报