thinkphp5安装:我是使用的git安装,由于从github上面clone很慢,我是从码云上clone的,git命令为
git clone https://git.oschina.net/liu21st/thinkphp5.git,然后进入到thinkphp5目录里
git clone https://git.oschina.net/liu21st/framework.git,将framework文件夹的名字修改为thinkphp
输入网址localhost/thinkphp5/public看是否安装成功
thinkphp5目录结构如下
├─application 应用目录(可设置)
│ ├─index 模块目录(可更改)
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块公共文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ └─view 视图目录
│ │
│ ├─command.php 命令行工具配置文件
│ ├─common.php 应用公共文件
│ ├─config.php 应用配置文件
│ ├─tags.php 应用行为扩展定义文件
│ ├─database.php 数据库配置文件
│ └─route.php 路由配置文件
设置调试模式,在application/config.php中将'app_debug'设置为true
如果修改控制器名为HelloWorld,那么访问index方法的url为 http://tp5.com/index.php/index/hello_world
下面的访问地址是错误的 http://tp5.com/index.php/index/HelloWorld
如果将application/config.php中url_convert设置为false,那么上面的地址可以访问
class Index
{
public function index($name = 'World')
{
return 'Hello,' . $name . '!';
}
}
当我们带name参数访问入口文件地址(例如 http://tp5.com?name=ThinkPHP)的时候,在浏览器中可以看到如下输出:
Hello,ThinkPHP!
现在我们在给控制器添加视图文件功能,我们在application/index目录下面创建一个view目录,然后添加模板文件view/index/hello.html(注意大小写),我们添加模板内容如下:
<html>
<head>
<title>hello {$name}</title>
</head>
<body>
hello, {$name}!
</body>
</html>
要输出视图,必须在控制器方法中进行模板渲染输出操作,现在修改控制器类如下:
<?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模板文件。
接下来,我们在浏览器访问
http://tp5.com/index.php/index/index/hello
输出:hello,thinkphp!
读取数据
在开始之前,我们首先在数据库demo中创建一个think_data数据表(这里以mysql数据库为例):
CREATE TABLE IF NOT EXISTS `think_data`(
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`data` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
INSERT INTO `think_data`(`id`,`data`) VALUES
(1,'thinkphp'),
(2,'php'),
(3,'framework');
首先我们需要在应用的数据库配置文件application/database.php中添加数据库的连接信息如下:
return [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'demo',
// 数据库用户名
'username' => 'root',
// 数据库密码
'password' => '',
// 数据库连接端口
'hostport' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => 'think_',
// 数据库调试模式
'debug' => true,
];
接下来,我们修改下控制器方法,添加读取数据的代码:
<?php
namespace app\index\controller;
use think\Controller;
use think\Db;
class Index extends Controller
{
public function index()
{
$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