thinkphp5.1 路由
时间: 2023-07-28 22:39:53 浏览: 91
ThinkPHP5.1 路由有两种模式:基础路由和完全匹配路由。
基础路由指的是根据 URL 的路径信息自动解析出控制器和操作,如 `/index/index` 表示访问 `Index` 控制器的 `index` 操作。在应用配置文件中可以设置默认的控制器和操作,如:
```php
// 默认控制器和操作
return [
'default_controller' => 'Index',
'default_action' => 'index'
];
```
完全匹配路由则需要手动配置,如:
```php
// 完全匹配路由
Route::rule('hello/:name', 'index/hello');
```
以上示例将匹配 `/hello/thinkphp`,并访问 `Index` 控制器的 `hello` 操作,其中 `:name` 是参数占位符,将被传递给操作方法。你还可以使用正则表达式匹配参数,如:
```php
// 正则表达式路由
Route::rule('blog/:id', 'blog/read')
->pattern(['id' => '\d+']);
```
以上示例将匹配 `/blog/123`,并访问 `Blog` 控制器的 `read` 操作,其中 `:id` 是参数占位符,只匹配数字类型的参数。
相关问题
thinkphp5.1 导出csv
在ThinkPHP5.1中导出CSV,可以按照以下步骤进行操作:
1. 在控制器中编写导出CSV的方法,如下所示:
```
public function exportCsv()
{
// 设置响应头信息
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="data.csv"');
// 打开输出流
$fp = fopen('php://output', 'w');
// 写入CSV头部
fputcsv($fp, ['姓名', '年龄', '性别']);
// 查询数据
$list = Db::name('user')->select();
// 写入CSV数据
foreach ($list as $item) {
fputcsv($fp, [$item['name'], $item['age'], $item['gender']]);
}
// 关闭输出流
fclose($fp);
}
```
2. 在路由中定义导出CSV的路由,如下所示:
```
Route::get('export', 'Index/exportCsv');
```
3. 在浏览器中访问导出CSV的路由,即可下载并保存CSV文件。
注意:以上代码仅供参考,具体实现方式可以根据业务需求进行调整。
thinkphp5.1使用workerman
ThinkPHP 5.1 可以使用 Workerman 实现实时推送功能,具体实现步骤如下:
1. 安装 Workerman
可以使用 Composer 安装 Workerman:
```
composer require workerman/workerman
```
2. 创建 Workerman 控制器
在应用的 controller 目录下创建 Workerman 控制器,例如创建 `Push.php`,并在该控制器中实现推送功能:
```php
namespace app\controller;
use think\worker\Server;
class Push extends Server
{
// 监听的地址和端口号
protected $socket = 'websocket://0.0.0.0:2346';
// 接收到客户端消息时触发
public function onMessage($connection, $data)
{
// 将客户端发送的消息广播给所有客户端
foreach ($this->worker->connections as $conn) {
$conn->send($data);
}
}
}
```
3. 在路由中定义 Workerman 路由
在 `route` 目录下的 `route.php` 文件中定义 Workerman 路由,例如:
```php
use think\facade\Route;
// 定义 Workerman 路由
Route::get('push', 'push/index');
```
4. 启动 Workerman 服务
在命令行中使用以下命令启动 Workerman 服务:
```
php think worker:server
```
5. 在页面中调用推送接口
在需要推送消息的页面中,调用推送接口,例如:
```javascript
var ws = new WebSocket('ws://localhost:2346');
ws.onopen = function() {
ws.send('Hello, Workerman!');
};
ws.onmessage = function(event) {
console.log(event.data);
};
```
以上就是使用 ThinkPHP 5.1 实现 Workerman 的推送功能的步骤。需要注意的是,在使用 Workerman 时需要开启 PHP 的长连接,因此需要使用 CLI 环境运行 PHP。此外,需要在浏览器中测试推送功能时,需要使用支持 WebSocket 的浏览器。
阅读全文