Phalcon#基本功能#控制器

Phalcon 中控制器统一以 Controller 结尾,方法以 Action 结尾,如:TestController::indexAction,所有控制器都应该继承自Phalcon\Mvc\Controller

初始化控制器

Phalcon\Mvc\Controller 提供了初始化函数 initialize,它会最先执行,官方不推荐使用 __construct(源码中 __construct 定义了 final 属性)。 initialize 仅会在事件 beforeExecuteRoute 成功执行后被调用。

查看 Phalcon\Mvc\Controller 类源码会发现,也可以实现 onConstruct 函数来使控制器对象创建后执行一些初始化逻辑。

{"onConstruct"}();
        }    
    }
}

通过 onConstruct 函数实现初始化控制器:

获取参数

URL 路由中的参数可以通过方法中直接传入获取:

通过派遣器 Dispatcher 获取参数:

dispatcher->getParam('param1');     // 获取参数param1
        $param2 = $this->dispatcher->getParam('param2');     // 获取参数param2
    }
}

通过请求 Request 对象获取参数:

request->getPost('name');     // 获取post参数name
        $age = $this->request->getQuery('age');     // 获取get参数age
    }
}
在控制器中使用 DI 中注入的服务

Phalcon\Mvc\Controller 继承的 injectable 类中封装了获取 DI 的方法,所有在控制器中可以方便的获取 DI 中注入的各种服务。

getDI()->get('service name');
        $this->di->get('service name'); // 或者
    }
}
绑定事件

控制器会自动作为 dispatcher 事件的侦听者,使用这些事件并实现这些方法后,便可以实现对应被执行的 actionbefore/after 钩子函数。

getActionName() == 'save') {
            // do something before save action ...
        }
    }
      
    public function afterExecuteRoute($dispatcher)
    {
        // 找到的action之后执行
    }
}
请求与响应

在控制器中可以直接获取请求和响应对象:

request; // 获取请求对象
        $params = $request->getPost(); // 获取post提交参数
           
        $response = $this->response; // 获取响应对象
        $response->setJsonContent(['a' => 11111, 'b' => 2222])->send(); // 输出json字符串
    }
}

你可能感兴趣的:(Phalcon#基本功能#控制器)