Книги читала, там интересно но и много воды. и скучно.Если скучно - иди на мамбу, там весело. Заработаешь больше, чем в айти, за пару часов. И нарушение слуха будет не помеха.
Но, насколько я могу судить, туда придется идти очень долго, поэтому я выбрал фронтенд.
Клиент (браузер)
↑↓ post-, get- запросы
example.com (любой ЯП и фреймворк на ваш выбор) - отвечает за валидацию, запросы к БД, отрисовку данных, ответ клиенту
↑↓ запрос к бд
Database Server (любая БД на ваш выбор)
class MyTest extends \PHPUnit\Framework\TestCase
{
public function testDoSomethingOne(): void
{
/** @var \PHPUnit\Framework\MockObject\MockObject $mockOfA */
$mockOfA = $this->getMockBuilder(A::class)->getMock();
$mockOfA->expects($this->once())
->method('setData')
->with(20);
(new B)->doSomething($mockOfA, 1);
}
public function testDoSomethingTwo(): void
{
/** @var \PHPUnit\Framework\MockObject\MockObject $mockOfA */
$mockOfA = $this->getMockBuilder(A::class)->getMock();
$mockOfA->expects($this->once())
->method('setData')
->with(10000);
(new B)->doSomething($mockOfA, 100);
}
}
The practice of replacing an object with a test double that verifies expectations, for instance asserting that a method has been called, is referred to as mocking.
$data = $stmt->fetchAll(PDO::FETCH_UNIQUE);
$data = $pdo->query("SELECT id, name FROM table")fetchAll(PDO::FETCH_KEY_PAIR);
--profile
удалось установить причину. Все упиралось в недостаток памяти. Увеличил объем RAM до 1Гб (было 384Мб) и update успешно завершился. Пик использования памяти при этом был равен 569.84Мб.<input type="checkbox" name="seller[categ][<?php echo $category['category_id']; ?>]" checked="checked" value="<?php echo $category['category_id']; ?>"/>
<input type="checkbox" name="seller[categ][]" checked="checked" value="<?php echo $category['category_id']; ?>"/>
<input type="checkbox" name="seller_categ_<?php echo $category['category_id']; ?>" checked="checked" value="<?php echo $category['category_id']; ?>"/>
Подливают масла в огонь и архитектурные моменты: какие-то свои термины для описания функционала, свои правила наименования, построения и прочего.
Никаких документаций по проекту, комментариев к столбцам в БД нет. Плюс область самих программ совершенно не знакомая.
Работаю не один, никакого вводного брифинга толком не было, а постоянно бегать за помощью считаю очень постыдным занятием, к тому же отвлекающим других от своей работы.
Product::
под капотом как раз и делает (new Product)->
, только кроме этого он может делать и что-то другое, о чем вы не знаете, поэтому я бы использовал Product:: хотя бы ради этого и какой никакой стандартизации.$user->products()->whereSlug($slug)
? Учитывая контекст, смею предположить что именно такой запрос вам нужен не так уж и часто, а значит это - неплохое решение. Нужен будет эктив - ну добавляете скоуп в модель Product и имеете счастье, типа $user->products()->whereSlug($slug)->isActive()
. Последние два метода относятся к конечной модели Product, а значит их дублировать не нужно, а вот релейшены в разных моделях ($user->products(), $page->products(), $something->products()
) - нужно, так что это правильный вариант. $active = true
- получится каша.