СтатикаВ данном случае не вижу причин не использовать статику.
Написал: Артур (23.06.2016 / 23:57)
СтатикаВ данном случае не вижу причин не использовать статику.
Вся проблема в том, что setUp и tearDown вызываются для каждого метода теста, то-есть каждый метод теста индивидуальный, это такое убожествоВас никто не заставляет использовать методы setUp и tearDown при тестировании. Я, к примеру, пользуюсь этими методами для совсем уж простеньких тестов, для остального я использую фабричные методы.
Сохранить что-то для следующих методов тестовСохранять что-то между методами теста это моветон.
тут в setUp для каждого теста наполняем бд данными а в tearDown удаляем всеТак делать не рекомендуется. Если есть возможность, необходимо заменить работу с базой mock объектами, если такой возможности нет, то создавать данные в базе следует на уровне setUpBeforeClass метода.
А mock, так это вообще, что за чудо конструктор легоMock это Mock, не больше, не меньше.
<?php foreach($messages as $message){ $mysqli->myQuery('INSERT INTO messages (title, author, message) VALUES (?, ?, ?)', [...]); }
<?php public function myQuery($query, $params, $isClean = true){ if(!isset($this->statements[$query])){ $this->statements[$query] = $this->prepare($query); } $stmt = $this->statements[$query]; $p = array_values($params); array_unshift($p, array_keys($params)); call_user_func_array([$stmt, 'bind_param'], $p); $result = $stmt->execute(); if($isClean){ $stmt->close(); unset($this->statments[$query]); } return $result; }
как то лаконичние
<?php class MyMysqli extends mysqli{ public function myQuery($query, $params){ $stmt = $this->prepare($query); $p = array_values($params); array_unshift($p, array_keys($params)); call_user_func_array([$stmt, 'bind_param'], $p); return $stmt->execute(); } } $mysql = new MyMysqli("localhost", "my_user", "my_password", "world"); $mysql->myQuery('SELECT * FROM users WHERE login = ?', ['s' => 'admin']);
например? через foreach?Через Redis
много кто не любит подготовленные запросы (взять тот же пдо клас в роторе)ротор было дело и БД не любил
<?php $mysqli = new mysqli("localhost", "my_user", "my_password", "world"); $select = $mysqli->prepare("SELECT * FROM users WHERE login=?"); $select->bind_param("s", 'admin'); $result = $select->fetch();