热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

thinkPHP学习笔记之安装配置篇

这篇文章主要介绍了一款国产MVC框架thinkPHP,这里讲诉的是thinkphp的安装与配置,以及一个简单实例,有需要的小伙伴可以参考下。

这篇文章主要介绍了一款国产MVC框架thinkPHP,这里讲诉的是thinkphp的安装与配置,以及一个简单实例,有需要的小伙伴可以参考下。

国产框架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或者其他的名字都可以

代码如下:


<&#63;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&#63;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

代码如下:


<&#63;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文件

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

推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
  • 本文介绍了ASP.NET Core MVC的入门及基础使用教程,根据微软的文档学习,建议阅读英文文档以便更好理解,微软的工具化使用方便且开发速度快。通过vs2017新建项目,可以创建一个基础的ASP.NET网站,也可以实现动态网站开发。ASP.NET MVC框架及其工具简化了开发过程,包括建立业务的数据模型和控制器等步骤。 ... [详细]
  • 数据库锁的分类和应用
    本文介绍了数据库锁的分类和应用,包括并发控制中的读-读、写-写、读-写/写-读操作的问题,以及不同的锁类型和粒度分类。同时还介绍了死锁的产生和避免方法,并详细解释了MVCC的原理以及如何解决幻读的问题。最后,给出了一些使用数据库锁的实际场景和建议。 ... [详细]
  • ps:写的第一个,不足之处,欢迎拍砖---只是想用自己的方法一步步去实现一些框架看似高大上的小功能(比如说模型中的toArraytoJsonsetAtt ... [详细]
author-avatar
mobiledu2502900597
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有