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 相关文章推荐
Breeze 文章管理系统 v1.0.0正式发布
Dec 14 PHP
手把手教你使用DedeCms的采集的图文教程
Mar 11 PHP
实用函数8
Nov 08 PHP
php zip文件解压类代码
Dec 02 PHP
PHP Memcached应用实现代码
Feb 08 PHP
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
Jun 01 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
Jan 22 PHP
php制作动态随机验证码
Feb 12 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
windows环境下使用Composer安装ThinkPHP5
May 18 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
Jun 12 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 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
Amazon Prime Video平台《无限住人 -IMMORTAL-》2020年开始TV放送!
2020/03/06 日漫
浅析php中json_encode()和json_decode()
2014/05/25 PHP
ThinkPHP3.1查询语言详解
2014/06/19 PHP
php计算函数执行时间的方法
2015/03/20 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
Jquery中显示隐藏的实现代码分析
2011/07/26 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
jquery获取复选框被选中的值
2014/03/22 Javascript
js对象的复制继承实例
2015/01/10 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
在Node.js中使用Javascript Generators详解
2016/05/05 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
jQuery实现简单的回到顶部totop功能示例
2017/10/16 jQuery
使用JavaScript破解web
2018/09/28 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
python使用socket进行简单网络连接的方法
2015/04/29 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
利用Python如何生成hash值示例详解
2017/12/20 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
详解Python中第三方库Faker
2020/09/25 Python
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
2013/01/23 HTML / CSS
深入浅析CSS3中的Flex布局整理
2020/04/27 HTML / CSS
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
现代绅士日常奢侈品:Todd Snyder
2019/12/13 全球购物
房地产管理毕业生自荐信
2013/11/04 职场文书
人力资源管理专业自荐书
2014/07/07 职场文书
公司年底活动方案
2014/08/17 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书
人事局接收函
2015/01/30 职场文书
律师催款函范文
2015/06/24 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers