前提:phalcon-devtools工具
创建基本框架
创建一个多模块的项目
phalcon project website modules
创建新module
1.新增加一个名叫backend,以Test\Modules为命名空间的后台模块
phalcon module –-name backend –-namespace=Test\Modules –output=app/modules
2.使用phalcon devtools生成一个带继承的新控制器
phalcon controller –-name index -output=app/modules/backend/controllers –base-class=ControllerBase
这里用到了phalcon controller的三个参数:–name参数指定控制器的名称,–output参数指定生成控制器的位置,–base-class参数指定继承的基类。
使用
- 要想使用新的模块中的新方法,还需要在配置文件中进行一些修改:
bootstrap_web.php中注册模块
'backend' => ['className' => 'Test\Modules\Backend\Module'],
loader.php中注册模块类
'Test\Modules\Backend\Module' => APP_PATH . '/modules/backend/Module.php',
2.如果要使用公共的model则需要在相应模块下注册命名空间
fontend模块下Module.php中
$loader->registerNamespaces([
'Test\Modules\Frontend\Controllers' => __DIR__ . '/controllers/',
'Test\Modules\Frontend\Models' => __DIR__ . '/models/',
'Test\Common\Models' => APP_PATH . '/common/models' //添加公共model
]);
接口开发常用功能
1.开启logger
config.php配置logger路径
'logger' => [
'backend' => APP_PATH . '/../logs/backend/log.txt',
'frontend' => APP_PATH . '/../logs/frontend/log.txt'
],
各个模块Module.php中注入logger单例到di
$di->setShared('logger' , function () use ($di) {
$config = $di->getConfig();
$logger = new FileAdapter($config->logger->backend);
// less or equal than DEBUG will be logged
$logger->setLogLevel(\Phalcon\Logger::DEBUG);
return $logger;
});
基类中添加saveLog方法
public function saveLog($msg){
$logger = $this->di->get('logger');
$logger->log($msg,\Phalcon\Logger::DEBUG);
}
基类中添加saveDBFailedLog方法
public function saveDBFailedLog($model){
$logger = $this->di->get('logger');
$msg = 'Failed to save db at '.$model->getSource();
foreach($model->getMessages() as $message){
$msg .= "\n" . $message;
}
$logger->log($msg,\Phalcon\Logger::DEBUG);
}
2.作为接口,返回json
在base类中添加方法
public function getResponse($resArray){
$response = $this->response;
$response->setHeader("Access-Control-Allow-Origin","*");
$response->setHeader("Access-Control-Allow-Methods", "GET, POST, PATCH, PUT, OPTIONS");
$response->setHeader("Access-Control-Allow-Headers", "x-requested-with,content-type");
$feed = json_encode($resArray);
$response->setContent($feed);
return $response;
}
附录:一个完整的模板