Php testing - пишем тесты на PHP Unit

Опубликовано 2021.08.22 в разделе Php.

Написание тестов - очень важная часть любого проекта. Если проект большой и сложный-тесты не раз вас спасут.

В чём смысл.

У вас есть какой-то функционал, который работает по определённому алгоритму, который не должен меняться. Тест проверяет, что функционал работает согласно заложенному алгоритму. Если кто-то изменит алгоритм-тест уведомит об этом.

Пример.

Есть бизнес требование "по трём входящим числам найти наибольшее, наименьшее и их сумму".

Решение:

Запуск команды в консоли через php e

Опубликовано 2021.08.22 в разделе Php.

Если вы не знали - запустить php код можно не только обратившись к скрипту через браузер, но и напрямую вызвав скрипт. Для этого даже необязателен веб-сервер.

Для подобного запуска необходимо открыть терминал(консоль). Это может быть как консоль на вашем локальном компьютере, так и удалённый сервер. Во втором случае нужно подключаться по ssh.

Далее переходите в папку со скриптом и запускаете скрипт командой:

PHP JSON - закодировать и раскодировать

Опубликовано 2021.08.21 в разделе Php.

Json - это формат отображения структурированных данных. Он очень удобен для хранения и передачи. Этот стандарт унифицирован и одинаково работает во всех языках программирования.

То есть, условно, код на Java может упаковать данные в json, сохранить их в БД, php скрипт их прочитает, передаст в браузер и их прочитает JavaScript.

Отличие кавычек в php

Опубликовано 2021.08.21 в разделе Php.

Кавычки в php бывают двух типов - одинарные и двойные.

Если вам нужно просто сохранить или вывести строку - то разницы практически нет.

Разница заключается в том, что при чтении строки в двойных кавычках php будет искать в ней переменные, приведёт их к строковому типу и выведет. В случае с одинарными кавычками php просто выведет все символы строки и всё.

Из этого очевидно, что одинарные кавычки работают быстрее.

Замерить время выполнения скрипта на python

Опубликовано 2021.08.20 в разделе Python.

Чтобы замерить время выполнения python скрипта - достаточно узнать текущее время до его работы и после. Затем вычесть из второго первое и таким образом получить продолжительность работы кода.

Для работы нам потребуется только пакет time

Как создать миграцию в django

Опубликовано 2021.08.11 в разделе Python.

Миграции в django - это программно сгенерированные файлы, создающие таблицы в БД, обновляющие структуру этих таблиц или удаляющие эти таблицы.

Данная процедура обязательна при работе с моделями, которые хранятся в БД

Добавление и удаление связей ManyToManyField

Опубликовано 2021.08.11 в разделе Python.

Очень часто модель надо связать со множеством экземпляров другой модели. Например модель "Город" и модель "Район". В такой логике у нас будет один город и множество районов города. Связать такие модели можно через метод ManyToManyField.

Django objects filter

Опубликовано 2021.08.10 в разделе Python.

Для извлечения из БД списка моделей используется метод модели objects. Далее методом filter можно добавить условия выборки(аналогично where в БД).

Например, выбор всех моделей типа Task, у которых поле size равно 5 и поле approval равно True:

  1. Task.objects.filter(size=5, approval=True)

С этим всё просто. А теперь предположим, что эти фильтры зависят от чего-либо, например от GET-параметров, от пользователя, времени суток или банально страницы сайта. Передать набор фильтров в виде словаря нельзя.

В чём разница между null и blank в моделях django

Опубликовано 2021.08.10 в разделе Python.

В полях моделей django часто встречаются такие свойства как null и blank. В чём же разница между null и blank?

Если установить null = True - то в ячейке таблицы БД значение поля будет равно null(если вы не передадите значение поля в модели).

Свойство blank отвечает за обязательность заполнения поля в админке. То есть если указать blank = True - поле будет необязательным к заполнению. Если указать blank = False - такое поле обязательно нужно будет заполнить.

Разбор массива php

Опубликовано 2021.02.13 в разделе Php.

Разобрать массив на элементы достаточно просто. Неважно - массив ассоциативный или нет. Для примера, ассоциативный массив выглядит так:
  1. $phones = [
  2. 'apple' => 'iPhone 8',
  3. 'samsung' => 'Samsung Galaxy',
  4. 'philips' => 'Philips E580',
  5. 'nokia' => 'Nokia N72',
  6. ];
Неассоциативный:
  1. $cars = ['Audi', 'BMW', 'Kia', 'Lada'];
Если вам известин номер или ключ элемента массива - можно обратиться по нему следующим образом:
  1. echo $phones['samsung'];// выведет "Samsung Galaxy"
Или так:
  1. echo $cars[1];// выведет "BMW"