ThinkPHP架构(一)-TP原理及路径问题及后台实现实例
一直用CSDN的博客,由于域名当时注册写的不合适,现在想来博客园写博客,以后要坚持写啦,记录自己的技术学习路程
本人两个月前,刚完成基于PHP的研会门户网站,虽然实现了基本功能,但感觉技术有些单薄,便想了一些优化的技术,毕竟项目做的不再多,而在于质量。
-- 前台使用了bootstrap框架技术,美化页面效果很显著(接下来计划有时间总结下bootstrap);并且应用HTML语义化文章结构,便于搜索引擎查找。
-- 后台打算使用ThinkPHP框架技术,这样可以使整体架构是MVC模式,结构化和模块化项目,并且使页面的html页码和php代码分离。
-- 最后计划实现页面的静态化,方便吸引搜索引擎爬虫的曝光率。
接下来笔者会陆续总结写一些博客,今天就先介绍总结一些TP框架的入门使用,以本人编写项目为主线介绍,希望也能够帮助和我一样刚接触TP架构的朋友。
后台应用TP框架:
1)路径问题
由于TP框架是MVC架构,原理跟smaty模板的一样,contraller调用view下的模板,将模板html页面替换成php,然后包含到contraller下的控制页面,并且缓存在缓存夹cache中,访问contraller时会自动定位到cache下的缓存php文件。这样就引出了路径的问题,模板view下的相对路径需要些contraller的相对路径,建议用绝对路径。
介绍几个系统常量:
网站根目录地址 __ROOT__ 路径为根目录 /
当前路径下 __URL__
公共区: __PUBLIC__ 路径为 /Public/
当前应用入口 __APP__
还可以自己定义路径变量,方便项目开发。
例子:建议使用绝对路径代替相对路径
<link rel="stylesheet" href="__PUBLIC__/css/bootstrap.css"> 代替<link rel="stylesheet" href="../../Public/css/bootstrap.css">
<img src="__ROOT__/admin/Home/View/Public/images/logo.png"/>代替 <img src="../../../../admin/Home/View/Public/images/logo.png"/>
2)数据库的连接展示,例子效果如下:
(1)ThinkPHP/Conf/conversation.php中配置数据库连接参数:
/* 数据库设置 */
'DB_TYPE' => 'mysql', // 数据库类型
'DB_HOST' => 'localhost', // 服务器地址
'DB_NAME' => 'yanhui', // 数据库名
'DB_USER' => 'root', // 用户名
'DB_PWD' => '', // 密码
'DB_PORT' => '', // 端口
(2)Contraller中新建控制news页面NewsContrallor:
<?php
namespace Home\Controller;
use Think\Controller;
class NewsController extends Controller {
public function index(){
$user=M('news');
$this->rows=$user->order('id')->select();
$this->display();
}
public function add(){
$this->display();
}
public function insert(){
$this->display();
}
public function delete(){
$this->display();
}
public function edit(){
$this->display();
} public function update(){
$this->display();
}
}
(3)View下新建模板页面News/index.html(用了bootstrap展示前端)
<div class="container">
<div class="panel panel-primary">
<div class="panel-heading">新闻展示</div>
<div class="panel-body">
<table class="table table-bordered table-striped">
<tr>
<th>id</th>
<th>标题</th>
<th>概要</th>
<th>上墙</th>
<th>时间</th>
<th>栏目</th>
</tr>
<volist name='rows' id='row'>
<tr>
<td>{$row.id}</td>
<td>{$row.title}</td>
<td>{$row.abstract}</td>
<td>{$row.shelf}</td>
<td>{$row.regtime|date='Y-m-d',###}</td>
<td>{$row.newsclassId}</td>
</tr>
</volist>
</table>
</div>
</div>
</div>
(根据这个例子,依次实现news模块的增删改查方法)
ThinkPHP架构(一)-TP原理及路径问题及后台实现实例的更多相关文章
- CPU处理器架构和工作原理浅析
CPU处理器架构和工作原理浅析 http://c.biancheng.net/view/3456.html 汇编语言是学习计算机如何工作的很好的工具,它需要我们具备计算机硬件的工作知识. 基本微机设计 ...
- 【转】深入分析 iBATIS 框架之系统架构与映射原理
深入分析 iBATIS 框架之系统架构与映射原理 iBATIS 通过 SQL Map 将 Java 对象映射成 SQL 语句和将结果集再转化成 Java 对象,与其他 ORM 框架相比,既解决了 Ja ...
- 《大型网站技术架构:核心原理与案例分析》【PDF】下载
<大型网站技术架构:核心原理与案例分析>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062557 内容简介 本书通过梳理大型网站 ...
- dubbo源码解析五 --- 集群容错架构设计与原理分析
欢迎来我的 Star Followers 后期后继续更新Dubbo别的文章 Dubbo 源码分析系列之一环境搭建 博客园 Dubbo 入门之二 --- 项目结构解析 博客园 Dubbo 源码分析系列之 ...
- 转载->CPU的内部架构和工作原理
CPU的内部架构和工作原理 本片博客转自:http://www.cnblogs.com/onepixel/p/8724526.html 感谢博主分享! 内部架构 CPU 的根本任务就是执行指令,对计 ...
- python网络编程01 /C/S架构|B/S架构、网络通信原理、五层协议、七层协议简述、端口映射技术
python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述.端口映射技术 目录 python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述. ...
- 1、cpu架构和工作原理
cpu架构和工作原理 计算机有5大基本组成部分,运算器,控制器,存储器,输入和输出.运算器和控制器封装到一起,加上寄存器组和cpu内部总线构成中央处理器(CPU).cpu的根本任务,就是执行指令,对计 ...
- 测试架构师CAP原理(最简单)
测试架构师CAP原理(最简单) 很多人都不是很了解CAP理论,其实CAP很简单,不要想复杂了! C:一致性,就是数据一致性,就是数据不出错! A:可用性,就是说速度快,不延迟,无论请求成功失败都很快返 ...
- C# 对包含文件或目录路径信息的 System.String 实例执行操作
在字符串操作中有一类比较特殊的操作,就是对包含文件或目录路径信息的 System.String 实例执行操作.比如根据一个表示路径的字符串获取其代表的文件名称.文件夹路径.文件扩展名等.在很多时候,我 ...
随机推荐
- jvm内存溢出问题的定位方法
jvm内存溢出问题的定位方法 今天给大家带来JVM体验之内存溢出问题的定位方法. 废话不多说直接开始: 一.Java堆溢出 测试代码如下: import java.util.*; public cla ...
- unittest 常用断言
1 assertEqual(a,b) 判断a==b 2 assertNotEqual(a,b) 判断a !=b 3 assertTrue(x) bool (x) is True 4 assertF ...
- 【学习笔记】第四章 Python3核心技术与实践--列表与元组
前面的课程,我们了解了Python 语言的学习方法,并且带你了解了 Python 必知的常用工具——Jupyter.接下来我们正式学习 Python 的具体知识. 对于每一门编程语言来说,数据结构都是 ...
- Python机器学习笔记:卷积神经网络最终笔记
这已经是我的第四篇博客学习卷积神经网络了.之前的文章分别是: 1,Keras深度学习之卷积神经网络(CNN),这是开始学习Keras,了解到CNN,其实不懂的还是有点多,当然第一次笔记主要是给自己心中 ...
- 松软科技课堂:索引器计时器Timer
在.NET中有三种计时器:1.System.Windows.Forms命名空间下的Timer控件,它直接继承自Componet.Timer控件只有绑定了Tick事件和设置Enabled=True后才会 ...
- response向客户端写入数据
1.写入文字: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Servle ...
- (1)安装elastic6.1.3及插件kibana,x-pack,essql,head,bigdesk,cerebro,ik
1.安装环境及程序版本 操作系统: centos6.7 jdk: 1.8.0_102 elastic: 1.6.3 kibana: 1.6.3 x-pack: 1.6.3 es-sql: 1.6.3 ...
- layui 上传图片回显并点击放大实现
1.页面代码布局 <div class="layui-col-xs12 form-group"> <div class="layui-col-xs6&q ...
- volatile 关键字的作用
简介Java 语言提供了一种稍弱的同步机制,即 volatile 变量,用来确保将变量的更新操作通知到其他线程.volatile 变量具备两种特性:变量可见性.禁止重排序. 作为同步锁在访问 vola ...
- Java中的static(1)【持续更新】——关于Eclipse的No enclosing instance of type ... 错误的理解和改正
No enclosing instance of type SomeClass is accessible. Must qualify the allocation with an enclosing ...