本文主要是介绍从无到有,使用Phalcon多模块作接口开发模板,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前提: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;
}
附录:一个完整的模板
这篇关于从无到有,使用Phalcon多模块作接口开发模板的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!