Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
$this->getResponse()
->setHttpResponseCode(200)
->setHeader('Content-type', 'application/json', true)
->setBody(Zend_Json::encode($result));
$this->_helper->json($result);
При необходимости подключить дополнительный источник данных, например, завтра мы решим использовать дополнительно NoSQL базу, или начать использовать кэш, то нам будет достаточно декорировать.
$adapter = new Zend_Auth_Adapter_DbTable( Zend_Controller_Front::getInstance()->getParam('bootstrap')->getPluginResource("db")->getDbAdapter(), 'user', 'email', 'password', 'MD5(CONCAT(?, passwordSalt,"' //MD5(пароль + уникальный хэш + общий хэш) . Zend_Controller_Front::getInstance()->getParam('bootstrap')->getOption('salt') . '"))' );
// decode from json params
$params = Zend_Json::decode($data);
$email = $params['email'];
$name = $params['realName'];
$password = $params['password'];
$err = array();
if (!isset($email) || !isset($name) || !isset($password) || (filter_var($email, FILTER_VALIDATE_EMAIL)==FALSE)) ...........
$email = isset($params['email']) ? $params['email'] : null;
$name = isset($params['realName']) ? $params['realName'] : null;
$password = isset($params['password']) ? $params['password'] : null;
if (!isset($email) || !isset($name) || !isset($password) || (filter_var($email, FILTER_VALIDATE_EMAIL)==FALSE))
{
if (!isset($email)) {
$err['email'] = "Email is missing";
}
Для чего надо делать проверку !isset($email) || !isset($name) || !isset($password), если переменные явным образом определеный несколькими строчками ранее?
После того, как переменные определены и имеют какие-то значения, только тогда уже проверять и не isset(), а уже null !== $email.
$params = Zend_Json::decode($data);
$errors = array();
$validate = function(array $what) use ($params, $errors) {
if (!is_array($params) || empty($params)) {
throw new InvalidArgumentException('Invalid params has provided');
}
foreach ($what as $name) {
if (!isset($params[$name])) {
$errors[$name] = ucfirst($name) . ' can\'t be empty!';
} elseif ('email' == $name) {
$validator = new Zend_Validate_EmailAddress();
if (!$validator->isValid($params[$name])) {
$errors[$name] = current($validator->getMessages());
}
}
/*
* Your additional logic here
* .................................
*/
}
};
try {
$validate(array('email', 'name', 'password'));
} catch (InvalidArgumentException $e) {
// Handle exception
}
if (empty($errors)) {
// Success
} else {
// Failure
}
Этот уровень в моей реализации ничего не знает о способах (и местах) хранения данных.
/* Start describe behaivors of object
*/
public function getDeviceByKey ($key) {
return $this->_mapper->findByKey($key);
}
public function deleteByKey($key) {
return $this->_mapper->deleteByCriteria('secretKey', $key);
}
$user = new Article();
$user->setName();
$user->setFirstname();
$article = new Article();
$article->setTitle('Doctrine model');
$article->setUser($user);
$em->persist($user);
$em->persist($article);
$em->flush();
$em->remove($article);
$em->flush();
Application_Model_Abstract_AbstractModel
array $options = null
$this->_setAdapter(Zend_Db_Table::getDefaultAdapter());
->setHttpResponseCode(400)
HOWTO: Одна из возможных реализация Модели (MVC) в Zend Framework