thinkPHP学习笔记之安装配置篇


Posted in PHP onMarch 05, 2015

国产框架thinkPHP,是一款MVC框架,这个框架最初模拟JAVA的struts框架,使用单一入口文件模拟JAVA的过滤器,使用action来模拟STRUTS的控制器ACTION,所以为什么他的MVC之中,M是model,V是view,而control却是action的原因。

    在3.2.3版本中,control改成了C,也是趋于形式,因为JAVA世界的springMVC开始流行,spring使用的control,不在使用action这种定义,其实action来表示control本身就有一定的误导,control就C嘛,为什么来一个aciton,让人摸不着头脑。

   thinkphp最难理解的是他的访问方式,在官方文档上面讲解有点误导人,按照官文一定出错,是因为官文没有讲清楚!

   thinkphp的安装其实很简单,只要require他的主程序文件,就可以生成一些列的目录,但是URL与他的control、tpl的关系是什么呢?官文说得实在太含糊了,但凡使用过JAVA的人都会被官文忽悠到吐血!

   官文,能否条理清楚点!?

   实际使用过后总结了以下几点:

1,安装thinkphp:

和主程序thinkPHP同目录下建立 admin.php或者其他的名字都可以

<?php

//定义项目名称和路径

define('APP_NAME', '');         //名字时空的时候,就是生成的文件夹前不加前缀

define('APP_PATH', './admin/');//这个是和主程序THINKPHP同目录下生成admin目录的意思

define('APP_DEBUG', true);//开始编辑模式,文件强制编译,不缓存

// 加载框架入口文件

require( "../ThinkPHP/ThinkPHP.php");//主程序入口文件

2,文件目录:

自动生成的文件目录是

common:写函数的地方

conf:配置文件,例如配置数据库连接地址

lang:语言包,国际化

lib:action,model都在这里面,是一个比较重要的地方,和JAVA的lib是JAR包完全不同概念

runtime:运行时的缓存文件

tpl:模板,就是html文件

3,访问方法:

URL:localhost/thinkphp/admin.php?m=Show&a=add

解释:本地/项目目录/刚才建立的单一入口文件?model=类名&action=方法名

意思:进入单一入口文件admin.php中的Show类中的add方法

强调:类名是大写开头,小写会找不到,这个把我害苦了,弄了一下午,原来是只认识大写类名,小写不认识

infopath风格URL:localhost/thinkphp/admin.php/Show/add

解释:和默认的一样,就是没有写出M A

4,写类,写方法:

thinkphp的作者一定是一个喜欢折腾的人,完美主义者,所以才会思考出这种方式来控制程序,整个程序都是以action类为核心,一个action类等于是一个页面,里面的方法就是和这个页面相关的操作,什么增删改查啊,这个很符合国人的思考方式,但是复用性并不高。

写文件:lib/action/ShowAction.class.php

<?php

//Show就是类名,Action只是一个识别辅助,必须写,但是可以调用的时候忽略,记得大写哦,你小写他也给你换成大写开头,让你弄死找不到小写show的模块,m=Show

class ShowAction extends Action {

//add就是action的方法,a=add

    public function add(){

    //输出页面CC,他自动加载默认TPL目录下Show文件下的cc.html文件,这里如果没有cc,就加载方法名字一样的add.html,如果cc.html与add.html都没有就报错

        $this->display('cc');

    }

}

5,写模板:

上面提到了加载模板,现在就写一个:

tpl/Show/cc.html

<html>一个普通HTML文件</html>

以上就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
Php部分常见问题总结
Oct 09 PHP
php 取得瑞年与平年的天数的代码
Aug 10 PHP
简单的移动设备检测PHP脚本代码
Feb 19 PHP
优化php效率,提高php性能的一些方法
Mar 24 PHP
php中使用explode查找某个字符是否存在的方法
Jul 12 PHP
组合算法的PHP解答方法
Feb 04 PHP
php的array_multisort()使用方法介绍
May 16 PHP
PHP实现数字补零功能的2个函数介绍
May 12 PHP
详解php比较操作符的安全问题
Dec 03 PHP
PHP汉字转换拼音的函数代码
Dec 30 PHP
CodeIgniter读写分离实现方法详解
Jan 20 PHP
PHP大文件切割上传功能实例分析
Jul 01 PHP
PHP判断浏览器、判断语言代码分享
Mar 05 #PHP
Php-Redis安装测试笔记
Mar 05 #PHP
PHP中文乱码解决方案
Mar 05 #PHP
php判断输入是否是纯数字,英文,汉字的方法
Mar 05 #PHP
PHP使用适合阅读的格式显示文件大小的方法
Mar 05 #PHP
PHP获取QQ达人QQ信息的方法
Mar 05 #PHP
PHP访问Google Search API的方法
Mar 05 #PHP
You might like
PHP将DateTime对象转化为友好时间显示的实现代码
2011/09/20 PHP
php对mongodb的扩展(初出茅庐)
2012/11/11 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
javascript 贪吃蛇实现代码
2008/11/22 Javascript
JavaScript高级程序设计 扩展--关于动态原型
2010/11/09 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
2014/06/04 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
jQuery实现的左右移动焦点图效果
2016/01/14 Javascript
javaScript中的原型解析【推荐】
2016/05/05 Javascript
js将json格式的对象拼接成复杂的url参数方法
2016/05/25 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
2016/12/14 Javascript
你真的了解BOM中的history对象吗
2017/02/13 Javascript
angular-ngSanitize模块-$sanitize服务详解
2017/06/13 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
微信小程序使用swiper组件实现层叠轮播图
2018/11/04 Javascript
JavaScript设计模式之享元模式实例详解
2019/01/17 Javascript
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
[00:32]2018DOTA2亚洲邀请赛Secret出场
2018/04/03 DOTA
[04:20]DOTA2-DPC中国联赛 正赛 VG vs LBZS 选手采访 1月19日
2021/03/11 DOTA
介绍Python中内置的itertools模块
2015/04/29 Python
Python 常用string函数详解
2016/05/30 Python
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
基于hashlib模块--加密(详解)
2017/06/21 Python
python实现梯度下降算法
2020/03/24 Python
python实现邮件自动发送
2019/08/10 Python
JupyterNotebook设置Python环境的方法步骤
2019/12/03 Python
Python @property装饰器原理解析
2020/01/22 Python
Lombok插件安装(IDEA)及配置jar包使用详解
2020/11/04 Python
教师师德承诺书
2014/03/26 职场文书
《放小鸟》教学反思
2014/04/20 职场文书
厨房管理计划书
2014/04/27 职场文书
课外活动实习计划
2015/01/19 职场文书
常住证明范本
2015/06/23 职场文书
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python