php框架开发(好用的php原生模板引擎)1
2015-09-15 00:33
603 查看
####代码目录结构
web/www/index.php 绑定域名www.domain.com 首页入口 单一入口.
web/upload/ 绑定域名 img.domain.com 用于上传文件图片等.
web/static/ 绑定域名 static.domain.com 用于静态文件 js,css,图片
include/config/ 基本配置
include/base/ 基本函数,框架内核.
src
src/controller
src/model/
src/service/
src/template/
src/extend/payment/各种支付类
src/extend/oauth各种第三方登录类
src/extend/util/一些工具类
rewrite 把所有不存在的路径重定向到index.php
访问www.domain.com 默认指向 index控制器的,index方法.
访问 www.domain.com/user/login/ 指向user控制器的login方法
定义好各个目录的路径.用常理定义,变量定义都行.
####自动加载
不用include s,m,c等层文件,全部自动加载,效率没问题
根据后缀名截取,判断. 例如首页控制器命名:IndexController.php,如果截取后十位==Controller,就知道这是一个控制器文件,然后根据类名,直接引入文件了. 可以参考thinkphp的autoload机制
####msvc架构
m model 数据模型,目前就理解为写数据库增删改查
v view 模板
c controller 控制器
s service 服务层
c 调用 s ,v ,不能直接调用m. 因为m就是直接读写数据库,然而s 根据需要 会把数据缓存到memcache等地方
s 调用 m
m 写数据库查询方法
前后台共用service.也可分别定义前台的和后台的service
这个框架参考了tp和以前公司的框架的优点,去掉不好的地方;
tp用了一堆a ,b,c,d函数很不爽.一个笑话就是tp再更新就26个字母都用光了.没有可用的函数了.哈哈哈
tp是好用,但是不如ci更面向对象.
####首页controller代码
####新闻的service服务类 NewsSvc.php
####首页模板
原生php, if(): endif; 这种语法好多人没写过吧,手册一开始就有介绍.这样很美观
<?=$xxx?> 相当于<?php echo $xxx;?> 这是php支持的简写方式
此模板不用编译,不用记忆复杂的模板语法.smarty的一个用途是给美工用,实现分工,但是还是基本还都是php程序员套模板,何必弄一套复杂的模板语法呢.还不如用原生php实现
模板代码: 先引入头尾,大家经常这样写吧.中间就简单的写一个新闻列表展示
web/www/index.php 绑定域名www.domain.com 首页入口 单一入口.
web/upload/ 绑定域名 img.domain.com 用于上传文件图片等.
web/static/ 绑定域名 static.domain.com 用于静态文件 js,css,图片
include/config/ 基本配置
include/base/ 基本函数,框架内核.
src
src/controller
src/model/
src/service/
src/template/
src/extend/payment/各种支付类
src/extend/oauth各种第三方登录类
src/extend/util/一些工具类
rewrite 把所有不存在的路径重定向到index.php
访问www.domain.com 默认指向 index控制器的,index方法.
访问 www.domain.com/user/login/ 指向user控制器的login方法
定义好各个目录的路径.用常理定义,变量定义都行.
####自动加载
不用include s,m,c等层文件,全部自动加载,效率没问题
根据后缀名截取,判断. 例如首页控制器命名:IndexController.php,如果截取后十位==Controller,就知道这是一个控制器文件,然后根据类名,直接引入文件了. 可以参考thinkphp的autoload机制
####msvc架构
m model 数据模型,目前就理解为写数据库增删改查
v view 模板
c controller 控制器
s service 服务层
c 调用 s ,v ,不能直接调用m. 因为m就是直接读写数据库,然而s 根据需要 会把数据缓存到memcache等地方
s 调用 m
m 写数据库查询方法
前后台共用service.也可分别定义前台的和后台的service
这个框架参考了tp和以前公司的框架的优点,去掉不好的地方;
tp用了一堆a ,b,c,d函数很不爽.一个笑话就是tp再更新就26个字母都用光了.没有可用的函数了.哈哈哈
tp是好用,但是不如ci更面向对象.
####首页controller代码
class IndexController extends MainController { public function index(){ //$this->xxx 这样就可以定义模板中用到的变量. $this->newsTypes = NewsSvc::newsTypes(); $this->news = NewsSvc::newsList(); $this->display('index.index');//不省略参数,灵活配置. } }
####新闻的service服务类 NewsSvc.php
class NewsSvc { public static function newsTypes(){ $array = array(1=>'新闻',2=>'公告'); return $array; } public static function newsList(){ $key = 'news'; $news = CacheSvc::get($key); if($news){ return $news; }else{ $news = NewsModel::select(); CacheSvc::set($key,$news,60);//缓存一分钟 return $new; } } } 不要滥用静态方法,有弊端,既然一直谈面向对象,还是尽量用new出对象来用. 看了一些国外的对接sdk, 用到了很多对象,特别麻烦,其中各种对象特别多, 有好处 也有麻烦的地方.各有利弊 不像国内一些代码 array数组走天下
####首页模板
原生php, if(): endif; 这种语法好多人没写过吧,手册一开始就有介绍.这样很美观
<?=$xxx?> 相当于<?php echo $xxx;?> 这是php支持的简写方式
此模板不用编译,不用记忆复杂的模板语法.smarty的一个用途是给美工用,实现分工,但是还是基本还都是php程序员套模板,何必弄一套复杂的模板语法呢.还不如用原生php实现
模板代码: 先引入头尾,大家经常这样写吧.中间就简单的写一个新闻列表展示
<?php include TPL_PATH.'inc.header.php'?> <div id="news_list"> <ul> <?php if($news):?> <?php foreach($news as $row):?> <li><a target="_blank" href="news/<?=$row['id']?>">[<?=$newsTypes[$row['classid']]?>] <?=$row['title']?></a></li> <?php endforeach;?> <?php endif;?> </ul> <!--实现 <li><a href="news/1">[新闻分类]新闻标题</a></li> --> </div> <?php include TPL_PATH.'inc.footer.php'?>
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- PHP VBS JS 函数 对照表
- C语言实现的统计php代码行数功能源码(支持文件夹、多目录)
- php xml 入门学习资料