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 просто выведет все символы строки и всё.

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

Разбор массива 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"

Создание игр на PHP

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

Создать игру на php совсем несложно. Конечно клиентскую часть нужно писать на html5, но саму логику вполне можно реализовать и на php. Например, если вы пишете онлайн игру - бэкэнд спокойно пишется на php, ведь он легко подключается к любой базе данных, может делать запросы к другим серверам. Если игра "на 15 минут", например морской бой - то игровые данные можно хранить даже в сессии, или в sqlite.

Игра, разработанная для платформы iOS/Android может хранить игровые данные на сервере, логика которого написана на php.

Как сделать код красивым и удобночитаемым. Процедуры, функции и классы в PHP.

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

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

Поэтому всегда важно уделять внимание оформлению кода, комментировать сложные участки кода.

Вначале немного теории. Один и тот же код можно писать разными способами. Код может быть процедурным, функциональным и объектно-ориентированным.

Просмотр SQL запроса в Laravel

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

Перед запросом нужно включить логирование и уже после него смотреть лог. Всё прекрасно работает.
  1. DB::enableQueryLog();
  2. $views = DB::table('real_views')
  3. ->leftJoin('node_info', 'node_info.nid', '=', 'real_views.nid')
  4. ->select('node_info.nid as node_nid','real_views.nid as real_nid')
  5. ->where('real_views.id', '>', $start_id)
  6. ->orderBy('real_views.id', 'asc')
  7. ->take(10)
  8. ->get();
  9. print_r(DB::getQueryLog());

Отправка POST запроса и получение ответа в Laravel

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

В начале контроллера пишем:
  1. use GuzzleHttp\Client;
И далее в нужном вам методе:
  1. $options = [
  2. 'name' => 'my name',
  3. 'client_id' => 'my client_id',
  4. 'client_secret' => 'my client_secret',
  5. ];
  6.  
  7. $client = new Client();
  8. $res = $client->request('POST', 'https://oauth.server.local/token', ['form_params' => $options]);
  9. echo $res->getBody();
Что интересно - ни в одном мануале я не смог найти, что переменные надо складывать в переменную массива с ключем form_params!

Получить конфиг в Laravel

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

Чтобы получить конфиг скажем из файла services.php - достаточно использовать следующий код:
  1. //пример конфига в services.php
  2. 'yandex' => [
  3. 'client_id' => '95869100dkfdo48gjc32269826ef926a',
  4. 'client_secret' => '191b012b2299e7jfye4hv789gd03ee6c9',
  5. 'redirect' => 'http://localhost/test-oauth',
  6. ],
  7.  
  8. //выведет 191b012b2299e7jfye4hv789gd03ee6c9
  9. config('services.yandex.client_secret');