for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace App\Models;
use Micro\Form\FormModel;
use Micro\Mvc\Models\Query;
/**
* Class LoginFormModel
* @package App\Models
*/
class LoginFormModel extends FormModel
{
public $login;
public $password;
* @return array
public function attributeLabels()
return [
'login' => 'Логин',
'password' => 'Пароль'
];
}
public function rules()
// Web security
['login, password', 'trim'],
['login, password', 'strip_tags'],
['login, password', 'htmlspecialchars'],
// check value elements
['login', 'string', 'min' => 5, 'max' => 16],
['password', 'string', 'min' => 6, 'max' => 32]
public function logined()
$query = new Query($this->container->db);
container
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:
class MyClass { } $x = new MyClass(); $x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:
class MyClass { public $foo; } $x = new MyClass(); $x->foo = true;
$query->addWhere('login = :login');
$query->addWhere('pass = :pass');
$query->params = [
'login' => $this->login,
'pass' => md5($this->password)
if ($user = User::finder($query, true)) {
$this->container->session->UserID = $user->id;
return true;
} else {
$this->addError('Логин или пароль не верны.');
return false;
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: