ThinkPHP 5.0的安装
方式一:官网下载
官网地址:
方式二:git安装
应用项目:
核心框架:
首先Clone项目仓库:
git clone project_name
然后再切换到项目文件夹(/project_name),安装核心框架
git clone thinkphp
后续需要更新框架时,只要切换到thinkphp文件夹并执行
git pull
运行ThinkPHP项目
在本地环境运行ThinkPHP项目有两种方式:
在计算机上搭建Apache服务器,将项目文件夹放到Apache中运行
在安装php环境的机器上执行路由命令,自建服务器环境
在此使用第一种方法,第二中方法占不讨论。
在浏览器上访问入口文件,访问项目:
http://localhost/project_name/public
配置数据库
项目文件夹下有很多子文件夹,其中application文件夹存放的就是我们的业务代码,所以在入门的时候几乎只涉及到这个文件夹的内容。
在开始制作项目前我们先配置数据库,用编辑器打开 da,修改数据库名称、用户名和密码就可以了。
了解目录的结构
application文件夹的目录结构是这样的
Index是系统为我们已经创建好的默认模块,我们还能为应用创建不同的模块,比如说后台Admin模块。
从模块文件夹的结构我们明显地看出一个MVC的架构,而接下来我们要做的就是创建第一个控制器,模型和视图。
创建第一个控制器
打开controller文件夹我们可以发现系统已经为我们创建了Index控制器,这也是我们为什么在项目创建完成后就可以通过浏览器访问的原因,在这里,我们创建一个新的控制器——Test控制器,我们在controller文件夹新建一个文件。
代码如下
namespace为这段代码划定了命名空间,避免了模块间和类库间的命名冲突。
index()是Test控制器的一个方法,当我们在通过URL访问时没有指定访问控制器的哪一个方法,就会默认访问index方法。
当然也可以为控制器添加初始化方法 _initialize(),它会在控制器调用方法时前被调用。
控制器一般不需要任何输出,直接return数据就可以了。
现在我们访问
http://localhost/project_name/public/Index/Test/index
可以发现页面上输出了 Hello World!
这里你应该就发现了URL的规律了,在index.php后面加上/模块名/控制器名/方法名就可以调用相应的方法了。
创建第一个视图
在服务器上展示一个网页
在传统的PHP中,我们很容易就习惯把html和标签和php语句混到一起。而在MVC结构中,我们要把展现在浏览器上的部分和业务逻辑隔离开来,使得项目的可维护性更高。
ThinkPHP 5.0没有为我们建立视图文件夹,我们在index模块文件夹下建立一个view文件夹,然后在view文件夹下建立一个与控制器同名的Test文件夹,当控制器Test需要调用模板时,会在/index/view/Test中寻找。
这里我们在Test下创建一个index.html文件:
然后我们修改控制器的代码,引入think\View命名空间,并创建一个View的实例。
View类中的fetch方法会找到此模块中view文件夹下同名的Test文件夹,并根据参数找到index.html文件,将它渲染出来,这时访问
http://localhost/project_name/public/Index/Test/index
可以看到网页已经显示出来了。
当然,如果方法和模板同名的话,就可以省略掉这个参数了,所以在这里
return $view->fetch('index');
可以写成return $view->fetch();
将变量输出到模板
我们需要把控制器中处理后的数据输出到模板上,这时只要把变量绑定到$view对象成为它的属性,就可以在模板中用花括号中将它输出了。
/index/controller
/index/view/Te
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body> <h1>{$name}</h1></body></html>刷新页面,即可看到效果。
在视图中,可以用点运算符(.)来访问数组的元素。
/index/controller
/index/view/Te
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body> <h1>{$}</h1> <h1>{$}</h1></body></html>当然也可以使用
{$person["name"]}
和
{$person["age"]}
访问数据库
在之前,我们已经配置好了数据库,假定我们现在有一张student表(id为主键)
| id | name | age |
| -- | ----- | --- |
| 1 | Tom | 23 |
| 2 | Alice | 22 |现在,在index文件夹下创建model文件夹,创建S文件
这里注意Student模型类要继承think\Model类,我们可以事先通过
use think\Model;
来引入这个类。在Student类中,我们需要定义 $table 属性告诉 ThinkPHP 这个模型匹配的是 student 表。在这里你也许会想到要为 Student 类定义 id, name, age 这些属性,不过在这里并不需要,等你调用这个模型的时候,ThinkPHP 会根据数据表的字段为 Student 的实例来添加这些属性。接下来,我们只要在控制器中引入Student类,就可以访问数据了。
首先别忘了引入Student类
use app\index\model\Student;
在 index 方法中,我们通过 Student::get(1) 静态获取了 Student表中主键为1的数据,并将它绑定在视图上,我们尝试在视图输出 student 的数据。
大功告成,除了这种静态调用的方式,还可以动态建立Student实例,这样就可以进行更加丰富的查询操作,这里就不详细撰述了,有兴趣的同学可以去翻看ThinkPHP 5.0文档中关于模型和数据库的部分。
成为一名ThinkPHP开发者
在这里,你已经创建了一个ThinkPHP应用,建立了第一个控制器,通过关联模型访问了数据库的数据,并将它们输出到HTML模板上。你已经完成了开发ThinkPHP的第一步,当然,这些知识对于你而言还是远远不够的,接下来你需要通过更多的资料来熟悉这个框架,并通过不断地翻看文档,来了解ThinkPHP的各种方法和强大特性,最后附上ThinkPHP 5.0的文档地址,加油啦。