开发框架 \ ThinkPHP \ ThinkPHP入门教程(一):模块、方法与模板

ThinkPHP入门教程(一):模块、方法与模板

总点击355
简介:ThinkPHP入门教程(一):模块、方法与模板 这一章开始,我们来实战ThinkPHP。 需要知道一些细节模块、方法与模板

ThinkPHP入门教程(一):模块、方法与模板

这一章开始,我们来实战ThinkPHP。

需要知道一些细节模块、方法与模板

1.需要知道一些细节

写在前面:

一定要注意变量名、类名、方法名以及文件名的大小写!

在序章里,我们创建了Myweb这个网站,并建立了App这个网站项目。有人可能不明白,为什么App文件夹同级目录里要建立一个Public文件夹。这个Public文件夹是存放网站的css,js及图片等公共资源的,这样此网站的所有项目都可以使用这些资源,节省网站空间,还使网站变得简洁。到后面我们需要上传图片或其他文件时,也可以在这里建立一个Upload文件夹(当然名字你可以随意取),存放上传的文件。

ThinkPHP采用utf-8编码,这意味着我们的编辑器、IDE和数据库也需要设置uft-8。但是这里一定要注意的是,千万不要用windows自带的记事本打开网站里面的任何文件。记事本打开文件后,会自动加上BOM头,这个东西严重影响网站,会造成各种奇怪的错误。如果你已经用记事本打开过,或者想知道自己的文件中有没有这个东西,最简单的办法是用Notepad++:

ThinkPHP入门教程(一):模块、方法与模板

下面我们要修改网站的入口文件,也就是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 IndexActionextendsAction {

4

    publicfunctionindex(){

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 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入门教程(一):模块、方法与模板》

意见反馈 常见问题 官方微信 返回顶部