您的位置:首页 > 编程语言 > PHP开发

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代码

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'?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php php框架开发