ThinkPHP入门教程(一):模块、方法与模板
来源:互联网 发布:mysql unique错误 编辑:程序博客网 时间:2024/06/06 12:55
ThinkPHP入门教程(一):模块、方法与模板
这一章开始,我们来实战ThinkPHP。
- 需要知道一些细节
- 模块、方法与模板
1.需要知道一些细节
写在前面:
一定要注意变量名、类名、方法名以及文件名的大小写!
在序章里,我们创建了Myweb这个网站,并建立了App这个网站项目。有人可能不明白,为什么App文件夹同级目录里要建立一个Public文件夹。这个Public文件夹是存放网站的css,js及图片等公共资源的,这样此网站的所有项目都可以使用这些资源,节省网站空间,还使网站变得简洁。到后面我们需要上传图片或其他文件时,也可以在这里建立一个Upload文件夹(当然名字你可以随意取),存放上传的文件。
ThinkPHP采用utf-8编码,这意味着我们的编辑器、IDE和数据库也需要设置uft-8。但是这里一定要注意的是,千万不要用windows自带的记事本打开网站里面的任何文件。记事本打开文件后,会自动加上BOM头,这个东西严重影响网站,会造成各种奇怪的错误。如果你已经用记事本打开过,或者想知道自己的文件中有没有这个东西,最简单的办法是用Notepad++:
下面我们要修改网站的入口文件,也就是Myweb文件夹下面的index.php文件,来开启网站的调试模式。需要修改的地方很简单,只要在<?php的下面加上一句
1
//开启调试模式
2
define(
'APP_DEBUG'
, true);
为什么要开启调试模式?
开启调试模式后,网站将关闭模板缓存(就是不会有Runtime文件夹下的~runtime.php了),可以自动记录sql日志,方便我们查看可能出现的错误。
2.模块、方法与模板
序章里,我们知道ThinkPHP是基于MVC设计模式,Tpl文件夹是视图,Lib里的Action文件夹是控制器。首先介绍下页面模板,所谓页面模板就是显示内容的网页啦。页面模板应该放在哪里呢?对,就是在视图里。打开Tpl文件夹,我们需要新建一个Index文件夹,注意大小写。然后在Index文件夹下新建一个index.html页面,这个就是我们将显示新闻目录的页面。新建好后,先不去管它,我们来看控制器。
进入Lib/Action文件夹,可以看到一个IndexAction.class.php文件。这个叫做模块,每一个模块就是一个控制器类。打开这个文件,我们可以看到如下代码:
1
<?php
2
// 本类由系统自动生成,仅供测试用途
3
class
IndexAction
extends
Action {
4
public
function
index(){
5
$this
->show(
'<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微软雅黑"; color: #333;} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px }</style><div style="padding: 24px 48px;"> <h1>:)</h1><p>欢迎使用 <b>ThinkPHP</b>!</p></div><script type="text/javascript" src="http://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script>'
,
'utf-8'
);
6
}
7
}
这里的代码就显示了我们在浏览器上看到的欢迎界面。下面来解释下这里的内容。
IndexAction类继承了ThinkPHP的核心类Action,注意这个命名:模块名+Action,其中模块名开头字母要大写。可以发现,这个模块名就是跟Tpl里那个文件夹是对应的。Tpl里有个Admin文件夹,这里就需要AdminAction.class.php文件,Tpl里有个News文件夹,这里就需要有NewsAction.class.php文件。但是,比如说这里有个EmptyAction.class.php文件,Tpl里可以没有Empty文件夹。
上面第三行代码可以看到IndexAction是继承Action类,Action这个类就是ThinkPHP的核心类。我们以后新建模块的时候都需要继承它。然后就是一个public属性的方法,叫做index()。需要对面向对象不熟的同学说下,这个index()与模块名Index是没有关系的。你也可以把index()改为panda(),这只是一个方法而已。但是这个方法与页面模板有关,具体情况下面会展开来说。
为什么这个代码的最后没有闭合标签“ ?> ” ?
PHP闭合标签“?>”在PHP中对PHP的分析器是可选的。 但是,如果使用闭合标签,任何由开发者,用户,或者FTP应用程序插入闭合标签后面的空格都有可能会引起多余的输出、php错误、之后的输出无法显示、空白页。因此,所有的php文件应该省略这个php闭合标签,并插入一段注释来标明这是文件的底部并定位这个文件在这个应用的相对路径。这样有利于你确定这个文件已经结束而不是被删节的。
在index()方法中,$this->show();的意思是直接输出show括号里的内容。我们需要输出页面,而不是直接写的内容,所以show()并不常用,这里就可以直接删除掉了。最常用的输出页面是使用$this->display(),注意display()里面是可以带参数的。比如说你在panda()方法里需要输出index.html页面,就可以在panda()方法里写$this->display('index')。可以看到display()的参数就是方法名。如果就是在index()方法里要输出index.html页面的话,就可以直接写$this->display()而不用加参数,非常方便。如果我们还有个模块叫做AdminAction.class.php,与之对应的在Tpl里有个文件夹叫Admin,里面有个index.html页面,而我们需要在IndexAction.class.php中的index()方法里输出那个页面,就可以写$this->display('Admin:index')。$this->display()的用法还有很多,以后遇到了,我们再细讲。
最后需要提醒下,模块是Lib/Action文件夹下的php类,模板是Tpl下的html页面。两个词有点像,别搞混了哦。
- ThinkPHP入门教程(一):模块、方法与模板
- ThinkPHP内容管理系统开发日记(四)-- 配置信息与开发Longin模块以及模板
- ThinkPHP 跨模块调用操作方法(A方法与R方法)
- ThinkPHP 模块与操作
- thinkphp自定义模板标签(一)
- Thinkphp 3.1.3中display方法调用其他模块的操作模板的bug
- thinkphp跨模块调用方法
- 【ThinkPHP学习】模块配置方法
- thinkphp跨模块调用方法
- thinkphp模板中的随机数方法
- ThinkPHP(模块分组)
- ThinkPHP--模板与框架整合
- 模板方法模式(一)
- 模板输出U方法带锚点 thinkphp
- ThinkPHP 1.5 使用 Smarty 模板的方法
- 模板中使用函数的方法-thinkphp
- 【ThinkPHP学习】ThinkPHP的模块绑定与域名部署
- thinkphp的模块与控制器命名规则
- JAVA 批处理 调整、压缩png jpg图片大小
- jQuery 计算iframe 窗口大小
- (Python编程)Pickle对象
- oracle数据库增删改后查询修改之前的数据
- 分享C#做的手势识别
- ThinkPHP入门教程(一):模块、方法与模板
- day59(5.9)程序报错类型之类中的静态方法不能直接调用动态方法
- linux小红帽安装mysql
- 清明短信延迟一个月,导致兄弟翻脸
- Oracle PL/SQL 编程基础 实例
- 0601-APP-menu
- trees in a row
- jquery组件团购倒计时功能
- 最后一次了