## 新建Teacher控制器
为了更好的将各个功能模块区分开,也为了更好的进行分工,我们再新建一个控制器Teacher,位于app\index\controller下,并在控制器Teacher中新建一个index方法,用于显示数据。
代码如下:
~~~
<?php
namespace app\index\controller;
use think\Db; // 数据库操作类
class Teacher
{
public function index()
{
return 'hello Teacher';
}
}
~~~
在写代码以前,我们想的是测试。
在写完代码以后,我们想的还是测试。
之所以返回了hello teacher,而没有去直接写具体的代码实现,目的也是为测试。在初步阶段,我们需要每写一点就测一点,保证自己的每行代码都和自己的预期结果一致。
测试结果如下图所示:
![](https://box.kancloud.cn/34c3d4f3bb40bffc2425b159a54127a8_318x79.png)
~~~
git checkout -f step3.2.3.1
~~~
执行上述命令后,上述示例代码信息如下:
![](https://box.kancloud.cn/8cb86961529ccaa5d69a161a08d1d934_683x258.png)
### 获取数据并输出
“获取教师表中所有数据”功能的实现代码如下:
~~~
<?php
namespace app\index\controller;
use think\Db; // 数据库操作类
/**
* 教师管理
*/
class Teacher
{
public function index()
{
// 获取教师表中的所有数据
$teachers = Db::name('teacher')->select();
// 查看获取的数据
var_dump($teachers);
}
}
~~~
**良好的注释习惯会使我们的编码事半功倍。**
测试结果如下图所示:
![](https://box.kancloud.cn/df227da007c0945a7b8781b14cc4ca9a_512x450.png)
~~~
git checkout -f step3.2.3.2
~~~
执行上述命令后,上述示例代码信息如下:
![](https://box.kancloud.cn/b668616d7e3c2f85d13091620ba2d3d7_805x330.png)
**知识点**:
<blockquote class="info">
<ol>
<li>var_dump()这个函数既可以查看一般变量的值,又可以查看数组的值,还可以查看对象的值。在前期的学习过程中,我们将会大量的与它接触。</li>
<li>你查看的结果,可能和我这里的形式表现不一致,如果是这样的话,请参考 http://www.mengyunzhi.com/share/php/107-xdebug.html 进行xdebug的安装。</li>
</ol></blockquote>
### 解释一下输出的结果:
~~~
// var_dump()语句的位置是xxx/Teacher.php的第15行。
D:\xampp\htdocs\thinkphp5\application\index\controller\Teacher.php:15:
// 变量类型是个array,即数组,“array (size=2)”表示这个数组中有两个子项。
array (size=2)
// 键值为0的值是一个数组:
0 =>
// 变量类型是一个数组,这个数组中有7个子项
array (size=7)
'id' => int 1 // 键值为id的值为1,是int类型
'name' => string '张三' (length=6) // 键值为name的值为 张三,是string类型,长度为6
'sex' => int 0
'username' => string 'zhangsan' (length=8)
'email' => string 'zhangsan@mail.com' (length=17)
'create_date' => int 123123
'update_date' => int 123213
1 =>
array (size=7)
'id' => int 2
'name' => string '李四' (length=6)
'sex' => int 0
'username' => string 'lisi' (length=4)
'email' => string 'lisi@yunzhi.club' (length=16)
'create_date' => int 123213
'update_date' => int 1232
~~~
我们非常高兴的看到,var_dump()后的数据既有了变量类型,又有了变量值,将数据的结构非常直观的展示在了我们面前。当然了,如果从数据结构的角度上来,上述结构是一个典型的树状结构。
### 树状数组结构的输出
![](https://box.kancloud.cn/2016-06-13_575e5bec37c1d.png)
当我们想输出teachers中的0号元素时:
~~~
public function index()
{
// 获取教师表中的所有数据
$teachers = DB::name('teacher')->select();
// 查看获取的数据
var_dump($teachers[0]);
}
~~~
当我们想输出teachers中0号元素的name值时:
~~~
public function index()
{
// 获取教师表中的所有数据
$teachers = DB::name('teacher')->select();
// 查看获取的数据
var_dump($teachers[0]['name']);
}
~~~
当然了,如果变量的类型是字符串,那么我们还可以使用echo语句:
~~~
public function index()
{
// 获取教师表中的所有数据
$teachers = DB::name('teacher')->select();
// 用下面的语句,也可以直接返回给用户
echo $teachers[0]['name'];
// 查看获取的数据
return $teachers[0]['name'];
}
~~~
测试结果如下图所示:
![](https://box.kancloud.cn/2016-06-13_575e5bec57e66.png)
~~~
git checkout step3.2.3.3
~~~
执行上述命令后,上述示例代码信息如下:
![](https://box.kancloud.cn/b5ac43a937142f849c2f5b3e7b66824d_796x383.png)
是的,数组就是这样的,一个典型的树状的数组结构。如果有一个N级数组,我们的输出方式可以是$teachers[0][0][0][1][1][1][1][0][0][0][1]........,只要有足够多的中括号,我们就可以输出到最后一项。
在多维数组中,只有叶子结点值的类型是非数组的,父结点的变量类型都是数组。
- 序言
- 第一章 准备知识
- 第一节:XAMPP
- 第二节:NAVICAT
- 第三节:GIT
- 第二章 HelloWorld
- 第一节:下载THINPHP5.0
- 第二节:启动xampp
- 第三节:hello thinkphp
- 第四节:Hello world
- 第五节:MCA
- 第六节:单引号与双引号
- 第三章 教师管理
- 第一节:新建数据库
- 第二节:CURD之R 读数据
- 3.2.1 时序图
- 3.2.2 连接数据库
- 3.2.3 直接读取数据
- 3.2.4 间接读取数据
- 3.2.5 使用V层显示数据
- 3.2.6 引入bootstrap
- 3.2.7 加入bootstrap样式
- 第三节:CURD之 C 增加数据
- 3.3.1 插入数据
- 3.3.2 表单传值
- 3.3.3 存储表单数据
- 3.3.4 自动时间戳
- 3.3.5 增加验证
- 第四节:CURD之 D 删除数据
- 3.4.1 什么是关键字
- 3.4.2 删除数据
- 3.4.3 定制删除链接
- 3.4.4 完善删除
- 第五节:CURD之 U 更新数据
- 3.5.1 读取数据
- 3.5.2 展示数据
- 3.5.3 修改数据
- 3.5.4 传递数据
- 3.5.5 接收数据
- 3.5.6 更新数据 方法一
- 3.5.7 更新数据 方法二
- 第六节:衔接各个action & 重构代码
- 3.6.1 index action
- 3.6.2 add action
- 3.6.3 insert action
- 3.6.4 delete action
- 3.6.5 edit action
- 3.6.6 update action
- 第七节:分页
- 3.7.1 调用内置分页
- 3.7.2 select与paginate(选学)
- 3.7.3 分页原理(选学)
- 3.7.4 调用page(选学)
- 第八节:模糊查询
- 3.8.1 增加查询
- 3.8.2 完善查询
- 第四章 登录与注销
- 第一节:cookie 与 session
- 第二节:静态方法
- 第三节:规划URL跳转
- 第四节:登录
- 4.4.1 登录流程
- 4.4.2 index action
- 4.4.3 login action
- 4.4.4 引入M层
- 4.4.5 异常Exception
- 第五节:注销
- 第六节:验证
- 4.6.1 action增加验证
- 4.6.2 使用构造函数验证
- 4.6.3 使用继承验证
- 第五章 E-R图与数据字典
- 第一节:第一张E-R图
- 第二节:实体间的关系
- 第三节:开发规范
- 第六章 班级管理
- 第一节:建立数据表
- 第二节:数据列表index
- 第三节:增加数据add
- 第四节:编辑数据edit
- 第五节:删除数据delete
- 第七章 学生管理
- 第一节:建立数据表
- 第二节:数据列表
- 7.2.1 显示性别
- 7.2.2 显示创建时间
- 7.2.3 显示班级名称
- 7.2.4 显示辅导员姓名
- 第三节:编辑数据
- 第四节:魔法函数
- 第五节:源码分析
- 第八章 课程管理
- 第一节:建立数据表
- 第二节:新增课程
- 第三节:编辑课程
- 8.3.1 edit
- 8.3.2 update
- 第九章 代码重构
- 第一节:add 与 edit
- 第二节:insert 与 update
- 第三节:模板继承
- 9.3.1 index.html
- 9.3.2 edit.html
- 9.3.3 小结
- 第十章 UML图
- 第一节:E-R图回顾
- 第二节:UML图
- 第十一章 菜单与路由
- 第一节:添加菜单
- 第二节:虚拟主机
- 第三节:定制路由
- 第十二章 开发调试
- 第一节:开启trace
- 第二节:查看日志
- 第十三章:总结