不知不觉在秀野堂已经过去了三周,每天都有新的东西需要汲取,消化,贵在坚持,了解自己的不足之处。本周基于Phalcon做了一系列项目,从开始的无从下手,到参考文档,阅读前人写过的代码,到能够总结出自己的思路,能自己动手做一些以前觉得遥不可及的API功能,困难和收获并存。
接下来是自己在项目里遇到的一些问题和一些自己书写的API的总结.
SQL查询部分:
query执行一条SQL语句,如果通过,则返回一个PDOStatement对象。query函数有个“非常好处”,就是可以直接遍历这个返回的记录集。query执行后,在下一次query执行之前,如果不取走所有返回的记录集,则query将会执行失败,除非我们调用 PDOStatement::closeCursor()来释放数据库资源与PDOStatement对象。
exec执行一条SQL语句,并返回受影响的行数。此函数不会返回结果集合。exec支持SELECT/DELETE/UPDATE/INSERT等全部SQL语句执行,所以相比PDO query()函数功能要强大的多。由于只返回受影响的函数,所以,如果执行SELECT则无法得到PDOStatement对象,故也无法遍历结果集。
执行select语句,使用query
首先注册 在视图里需要注册
<?php
//Registering Volt as template engine
$di->set('view', function() {
$view = new PhalconMvcView();
$view->setViewsDir('../app/views/');
$view->registerEngines(array(
".volt" => 'PhalconMvcViewEngineVolt'
));
return $view;
});
模板继承: extends "templates/xxx.volt"
对于Oauth2.0的理解更多要结合实际项目来理解,比如说淘宝/爱用宝/用户模型,AppleStore/APP/用户模型来进行理解
OAuth2.0--阮一峰
更对请查阅相关资料
/**
* 王皓宇定义的控制器注入
* @var DocPubReplyController
*/
$di->set('DocPubReplyController', function(){
$DocPubReplyController = new DocPubReplyController();
return $DocPubReplyController;
});
//发表文章
$app->post('/api/pub_doc', function() use ($app, $responseObj) {
$data = $app->DocPubReplyController->pubDoc($app, $responseObj);
$app->response->setJsonContent($data);
$app->response->send();
});
/**
* 文章发表功能 @why 2016/9/23
* @param [type] $app [description]
* @param [type] $responseObj [description]
* @return [type] [description]
*/
public function pubDoc($app, $responseObj)
{
$username = $app->request->getPost('username');
$password = $app->request->getPost('password');
$uid = $app->request->getPost('uid');
$cid = $app->request->getPost('cid');
$title = $app->request->getPost('title');
$keywords = $app->request->getPost('keywords');
$content = $app->request->getPost('content');
$pubip = 1;
$pubhostid = '1';
$passwordOk = self::isPasswordOk($password);
$userCheck = self::isUserExisit($app, $username, $password);
if ($passwordOk && $userCheck) {
if ($uid == '' || $title == '' || $content == '' || $keywords == '' || $cid == '') {
$responseObj['status'] = 0;
$responseObj['msg'] = '填入信息不能为空';
return $responseObj;
}
$replys = new Doc();
$replys->uid = (int)$uid;
$replys->cid = (int)$cid;
$replys->title = $title;
$replys->keywords = $keywords;
$replys->content = $content;
$replys->pubip = $pubip;
$replys->pubhostid = $pubhostid;
$res = $replys->save();
if ($res) {
$responseObj['status'] = 1;
$responseObj['msg'] = '文章发表成功';
}
else {
$responseObj['status'] = 0;
$responseObj['msg'] = '文章发表失败';
}
return $responseObj;//返回状态码
}
else {
$responseObj['status'] = 0;
$responseObj['msg'] = '用户名或密码不正确';
return $responseObj;
}
return $responseObj;
}
服务注册
$di->set('NewUserController', function(){
$NewUserController = new NewUserController();
return $NewUserController;
});
用户登陆
$app->post('/api/login', function() use ($app, $responseObj) {
$data = $app->NewUserController->login($app, $responseObj);
$app->response->setJsonContent($data);
$app->response->send();
});
/**
* 用户登陆逻辑
* @param 对象 $app [description]
* @param [type] $responseObj [description]
* @param 数组 $params 用户登陆时提交的信息
*/
public function login($app, $responseObj)
{
$redis = self::initRedis(); //初始化redis对象
$params = array(); //参数数组
$params['username'] = $app->request->getPost('username');//获取用户名
$params['password'] = $app->request->getPost('password'); //获取密码
$params['password'] = md5($params['password']);
if ($params['username'] == '' || $app->request->getPost('password') == '') {
$responseObj['status'] = 0;//失败状态
$responseObj['msg'] = '用户名和密码不能为空';
return $responseObj;//返回状态码
}
$ifMobile = self::usernameIsMobile($params['username']);//判断是否是手机用户
if ($ifMobile) {
//如果是手机按照手机逻辑检测,返回查询结果
$checkResult = self::userMobileCheckLogic($app, $params['username'], $params['password']);
}
else {
//非手机逻辑检测
$checkResult = self::usernameCheckLogic($app, $params['username'], $params['password']);
}
if ($checkResult) { //返回值状态改变
$responseObj['status'] = 1;
$responseObj['msg'] = $checkResult;
$responseObj['data'] = [
'uid' => strval($checkResult->user_uid), //把变量转换成字符串类型
'usrname' => strval($checkResult->user_name),
];
}
else {
$responseObj['status'] = 0;
$responseObj['msg'] = '没有该用户,或密码错误';
$responseObj['data'] = '';
}
return $responseObj;
}
相关文章推荐: