php框架开发(好用的php原生模板引擎)1

代码目录结构

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'?>

转载于:https://my.oschina.net/yiupng/blog/506112

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值