我们找到 index 模块的 Index 控制器
(文件位于 application/index/controller/Index.php 注意大小写)
<?php
namespace app\index\controller;
根据类的命名空间可以快速定位文件位置,在 ThinkPHP5.0 的规范里面,命名空间其实对应了文件的所在目录, app
命名空间通常代表了文件的起始目录为 application ,而think 命名空间则代表了文件的其实目录为
thinkphp/library/think ,后面的命名空间则表示从起始目录开始的子目录。
使用控制器功能
<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
public function hello($name = 'thinkphp')
{
$this->assign('name', $name);
return $this->fetch();
}
}
这里使用了 use 来导入一个命名空间的类库,然后可以在当前文件中直接使用该别名而不需要使用完整的命名空间路径访问类库。也就说,如果没有使用
use think\Controller; 就必须使用 class Index extends \think\Controller
这种完整命名空间方式。在后面的内容中,如果我们直接调用系统的某个类的话,都会假设已经在类的开头使用 use 进行了别名导入。
Index 控制器类继承了 think\Controller 类之后,我们可以直接使用封装好的 assign 和
fetch 方法进行模板变量赋值和渲染输出。fetch 方法中我们没有指定任何模板,所以按照系统默认的规则(视图目录/控制器/操作方法)输出了view/index/hello.html 模板文件。
读取数据
<?php
namespace app\index\controller;
use think\Controller;
use think\Db;
class Index extends Controller
{
public function index()
{
//从表data中读取一条数据
$data = Db::name('data')->find();
//传输数据
$this->assign('result', $data);
//显示界面
return $this->fetch();
}
}
页面部分
<html>
<head>
<title></title>
</head>
<body>
{$result.id}--{$result.data}
</body>
</html>
模板标签的用法和 Smarty 类似,就是用于输出数据的字段,这里就表示输出 think_data表的 id 和data 字段的值。我们访问会输出:
1–thinkphp