// 绑定URL中的参数到操作的方法中,格式为key/value
// 使用场景:需要在控制器中获取URL中的参数并进行相应的逻辑处理
// 注意事项:不要绑定无关的参数,避免不必要的性能消耗和安全风险

// 绑定GET参数
public function index($id = 0, $name = '') {
    // 逻辑处理代码
}

// 绑定POST参数
public function save() {
    $data = input('post.'); // 直接获取所有POST参数
    $name = input('post.name'); // 获取指定POST参数
    // 逻辑处理代码
}

// 绑定路由参数
public function detail($category = '', $id = 0) {
    // 逻辑处理代码
}

// 绑定路由和URL参数
public function edit($id = 0) {
    // 逻辑处理代码
}

ThinkPHP中使用Traits提取公共逻辑的方法

// 使用场景:在多个控制器或模型中需要复用相同的逻辑代码
// 使用Traits可以将共同的逻辑代码定义在一个Traits类中,然后在其他类中引用,实现代码复用的效果

// 1. 定义Traits类,例如CommonTrait.php
namespace app\common;

trait CommonTrait {
    public function log($message) {
        // 记录日志逻辑
    }

    // 其他公共逻辑方法...
}

// 2. 在控制器或模型中引用Traits
namespace app\controller;

use app\common\CommonTrait;

class UserController {
    use CommonTrait;

    public function login() {
        // 公共逻辑方法可直接在此处使用,无需重复编写
        $this->log('用户登录');
        // 逻辑处理代码
    }
}

// 在其他控制器或模型中同样可以引用CommonTrait,实现共享逻辑代码的效果

ThinkPHP中使用命名空间实现模块化开发的方法

// 使用场景:在大型项目中,为了方便代码管理、模块化开发和代码复用,可以使用命名空间的方式组织代码

// 1. 在config目录下的app.php文件中设置app_namespace参数
'app_namespace' => 'app',

// 2. 根据项目需求创建不同的模块目录,例如app目录下有admin和home两个模块
app/
├── admin/
│   ├── controller/
│   ├── model/
│   └── ...
├── home/
│   ├── controller/
│   ├── model/
│   └── ...
├── common/ // 存放通用的控制器、模型、函数等
├── widget/ // 存放页面小部件
└── ...

// 3. 在控制器或模型类中定义命名空间
namespace app\admin\controller;

use think\Controller;

class UserController extends Controller {
    // 逻辑处理代码
}

namespace app\home\controller;

use think\Controller;

class UserController extends Controller {
    // 逻辑处理代码
}

// 在应用中使用不同命名空间引入所需的控制器或模型,实现模块化开发