PHP高效框架Bonfrire之模板功能
2012-04-19 21:34
197 查看
许多CMS,Blog等系统都是用PHP开发的, 一部分原有是因为 PHP + MySQL + apache/nginx/IIS 环境比较易搭建
而且还开源, 移植也比较方便。
可能很多PHP开发人员都在找一个高效,维护容易的框架。我就是其中一位, 一不小心, 我跌入了 CodeIgnter 的怀抱,
刚开始学习PHP, 确实有很多地方很不顺手, 可能是自己太菜, 入手很久, 感觉只搞明白了 CodeIgnter 的皮毛。 后来由于
种种原因, 一位朋友指点我们用国外兴起的一个新的框架 bonfire 。顿时我的新就凉了。CodeIgnter还没搞特别清楚, 又
来了一个新的框架, 经过朋友预先了解此框架, 给我讲解了一下 bonfire 和 CodeIgnter 的区别以及关联。这才知道原来
不是要学习一个崭新的框架, 而是一个把 CodeIgnter 扩展后的高效框架, 只是模式由原来的 MVC 接近无缝的方式升级
为了 HMVC 。
新手的我自然难以迅速上手, 所以看了一些 bonfire的代码后, 发现最厌恶的事情来了, bonfire 提供了一套 theme
其中分为 前台theme 和 后台theme 。一直以来我都觉得 theme 在这种框架中是很让人厌恶的, 因为他会限制自由。
正如我所想, 由于一个项目需要在 bonfire 上进行, 一位同事早在我之前开始研究 bonfire ,设计好我们所需的后端
我则在忙完手中的活以后, 被调到协助同事一起实现前段。当天晚上, 好好看了一下同事写的代码。肯定比我写的好, 我
太菜了。不过发现一个有趣的事情, 就是他很好的利用了 bonfire 的 HMVC 模式, 将所有功能都独立的分配到了 modules
模块下, 这样便于每个功能独立的管理, 赞叹了一把, 因为我还不熟悉这种模式。
第二天, 早上我忙完手上一些简单的事情后, 为了统一编程风格和实现方向, 我们2个人在开会的地方开了一个小会议
一切都比较顺利, 可是不顺利的终归是要来的, 由于我们希望把我们的网站做的足够模块化, 那样不至于修改一处, 影响一堆
所以我们需要把首页中的 3 部分纵向排开的区域作为 3 个模块来实现, 但是要用到模板, 因为那样更容易管理, 同时也给我
提供了一个具有方向性的信息, 使用一个 modules::run(module/class/method) 应该可以实现我所需要的实现方式。
我先了解理一下该框架的 template , 自己新建另一个简单的 theme 后, 开始了尝试 让局部区域模块化的征程。
由于这个有用的信息, 我尝试 modules::run(module/class/method) 一直会报错, 查看源码对应的函数, 发现返回值一直
是空的, 当然页面看不到变化...但是调试多了, 变化还是有的, 只是很想笑的事情发生了, 页面的模板被加载两次, 这样的页面
你们想一下估计也能想象得到当时的情景, 更何况还有一个 errer 无法 locate file 。难道 bonfire 会 so silly 。事实上, 还是
我们错了, 由于 bonfire 是新出来的框架, 所以说明文档一直在更新完善, 不过在查看许久后, 终于发现了一个让人兴奋的word
"block" 。 是的, "block" 一个让我觉得 bonfire 可以实现高度模块化的途径。
下面直接讲实现方法, 在 theme 的php文件中, 在需要自定义显示的区域添加如下code
然后在某一个要 controller 中, 定义一段绑定 view 到这个 block 的 code
最后记得检查是否存在 view modules/show/views/main.php
这只是一种方法用来实现这一部分, 这种方法有一个局限性就是,没有经过 model 所以无法给 view 里面传数据,
不需传数据的方法, 这样处理的方式还是比较好的, 当然后续还会跟进有关bonfire的其他相关方法。
当然不一定是最好的, 但是希望有帮助!
有兴趣的朋友可以加入Bonfire群: 36544181
而且还开源, 移植也比较方便。
可能很多PHP开发人员都在找一个高效,维护容易的框架。我就是其中一位, 一不小心, 我跌入了 CodeIgnter 的怀抱,
刚开始学习PHP, 确实有很多地方很不顺手, 可能是自己太菜, 入手很久, 感觉只搞明白了 CodeIgnter 的皮毛。 后来由于
种种原因, 一位朋友指点我们用国外兴起的一个新的框架 bonfire 。顿时我的新就凉了。CodeIgnter还没搞特别清楚, 又
来了一个新的框架, 经过朋友预先了解此框架, 给我讲解了一下 bonfire 和 CodeIgnter 的区别以及关联。这才知道原来
不是要学习一个崭新的框架, 而是一个把 CodeIgnter 扩展后的高效框架, 只是模式由原来的 MVC 接近无缝的方式升级
为了 HMVC 。
新手的我自然难以迅速上手, 所以看了一些 bonfire的代码后, 发现最厌恶的事情来了, bonfire 提供了一套 theme
其中分为 前台theme 和 后台theme 。一直以来我都觉得 theme 在这种框架中是很让人厌恶的, 因为他会限制自由。
正如我所想, 由于一个项目需要在 bonfire 上进行, 一位同事早在我之前开始研究 bonfire ,设计好我们所需的后端
我则在忙完手中的活以后, 被调到协助同事一起实现前段。当天晚上, 好好看了一下同事写的代码。肯定比我写的好, 我
太菜了。不过发现一个有趣的事情, 就是他很好的利用了 bonfire 的 HMVC 模式, 将所有功能都独立的分配到了 modules
模块下, 这样便于每个功能独立的管理, 赞叹了一把, 因为我还不熟悉这种模式。
第二天, 早上我忙完手上一些简单的事情后, 为了统一编程风格和实现方向, 我们2个人在开会的地方开了一个小会议
一切都比较顺利, 可是不顺利的终归是要来的, 由于我们希望把我们的网站做的足够模块化, 那样不至于修改一处, 影响一堆
所以我们需要把首页中的 3 部分纵向排开的区域作为 3 个模块来实现, 但是要用到模板, 因为那样更容易管理, 同时也给我
提供了一个具有方向性的信息, 使用一个 modules::run(module/class/method) 应该可以实现我所需要的实现方式。
我先了解理一下该框架的 template , 自己新建另一个简单的 theme 后, 开始了尝试 让局部区域模块化的征程。
由于这个有用的信息, 我尝试 modules::run(module/class/method) 一直会报错, 查看源码对应的函数, 发现返回值一直
是空的, 当然页面看不到变化...但是调试多了, 变化还是有的, 只是很想笑的事情发生了, 页面的模板被加载两次, 这样的页面
你们想一下估计也能想象得到当时的情景, 更何况还有一个 errer 无法 locate file 。难道 bonfire 会 so silly 。事实上, 还是
我们错了, 由于 bonfire 是新出来的框架, 所以说明文档一直在更新完善, 不过在查看许久后, 终于发现了一个让人兴奋的word
"block" 。 是的, "block" 一个让我觉得 bonfire 可以实现高度模块化的途径。
下面直接讲实现方法, 在 theme 的php文件中, 在需要自定义显示的区域添加如下code
<aside id="cust_define"> <?php echo Template::block('cust_define'); ?> </aside>
然后在某一个要 controller 中, 定义一段绑定 view 到这个 block 的 code
<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class Home extends Front_Controller { public function index() { Template::set_block('cust_define', 'show/main'); // 仔细看这里 aside id 和 view path Template::render(); } }
最后记得检查是否存在 view modules/show/views/main.php
这只是一种方法用来实现这一部分, 这种方法有一个局限性就是,没有经过 model 所以无法给 view 里面传数据,
不需传数据的方法, 这样处理的方式还是比较好的, 当然后续还会跟进有关bonfire的其他相关方法。
当然不一定是最好的, 但是希望有帮助!
有兴趣的朋友可以加入Bonfire群: 36544181
相关文章推荐
- PHP_thinkphp框架使用PHPMailer实现发送邮件的功能,以及各种问题解析
- Yii1.1框架实现PHP极光推送消息通知功能
- 我的模板分析引擎类PHP的.net开发方法--功能介绍篇
- 用PHP制作静态网站的模板框架(一)
- 百度AI模板 phpCI框架 通过access_token获取 人脸识别信息
- Web 高效开发必备的 PHP 框架
- PHP Yii框架中使用Jquery自带的Ajax功能
- php CI框架高级视图功能,视图继承,多重继承,视图片段
- laravel框架从blade模板页面向php逻辑代码提交数据(传值)的位置
- 用PHP制作静态网站的模板框架(二)
- PHP实现简单的模板引擎功能示例
- 国产InitPHP框架系列 - InitPHP框架搭建高可用WEB应用03:模板View使用
- 在使用thinkphp框架时,在模板中尽量少使用php代码段,会导致不解析的后果
- 解析PHP的Yii框架中cookie和session功能的相关操作
- 使用T4模板为EF框架添加实体根据数据库自动生成字段注释的功能
- PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
- 用PHP制作静态网站的模板框架(四)
- 从此不求人:自主研发一套PHP前端开发框架(30) 实现简单的用户登录功能
- PHP 基于Yii框架中使用smarty模板的方法详解
- 详解PHP的Yii框架的运行机制及其路由功能