Как сделать код красивым и удобночитаемым. Процедуры, функции и классы в 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');

Создание урла с middleware в Laravel

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

Создаёте контроллер, например CronController (в консоли php artisan make:controller CronController):
  1. namespace App\Http\Controllers;
  2.  
  3. use Illuminate\Http\Request;
  4.  
  5. use App\Http\Requests;
  6. use Illuminate\Support\Facades\DB;
  7.  
  8. class CronController extends Controller
  9. {
  10.  
  11. public function myCallback() {
  12. echo __FUNCTION__;
  13. }
  14. }
Затем создаёте middleware, например с именем LocalhostOnly (в консоли php artisan make:middleware LocalhostOnly)
  1. namespace App\Http\Middleware;
  2.  
  3. use Closure;
  4.  
  5. class LocalhostOnly
  6. {
  7. /**

Разбить строку по последнему пробелу

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

Допустим у нас есть строка
  1. $content = 'В CMS Drupal есть много типов материалов, которые можно расширить полями различных типов.';
И стоит задача разбить строку на две подстроки по последнему пробелу. Сразу напрашивается следующий код, но он не работает:
  1. $content = preg_split("/[\s]{1}/", $content);
По идее он должен разбить строку по первому пробелу, но разбивает он её по всем пробелам. Придётся пойти более сложным путём, а именно:
  1. //развернем строку задом наперед(реверс)

Как на PHP узнать IP адрес посетителя

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

IP адрес посетителя, как и другая полезная информация, хранится в суперглобальной переменной $_SERVER. Суперглобальной она называется из-за того, что она доступна всегда и везде. Её не нужно определять или как-то подключать. Она видна даже если запускать скрипт из командной строки. $_SERVER не что иное как ассоциативный массив данный. Чтобы посмотреть из чего он состоит - его можно вывести полностью:
  1. echo '<pre>';
  2. print_r($_SERVER);
  3. echo '</pre>';
На и непосредственно IP адрес хранится в элементе с индексом REMOTE_ADDR.

Отправка E-mail с вложением

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

Для того, чтобы отправить письмо с вложением - создайте функцию со следующим содержанием:
  1. function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) {
  2. $file = $path.$filename;
  3. $file_size = filesize($file);
  4. $handle = fopen($file, "r");
  5. $content = fread($handle, $file_size);
  6. fclose($handle);
  7. $content = chunk_split(base64_encode($content));
  8. $uid = md5(uniqid(time()));
  9. $name = basename($file);
  10. $header = "From: ".$from_name." <".$from_mail.">\r\n";
  11. $header .= "Reply-To: ".$replyto."\r\n";</".$from_mail.">

Основы Symfony 2

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

Выдержки и памятки из различных статей. Мои собственные заметки.
  • app/: Конфигурация приложения
  • src/: PHP код проекта
  • vendor/: Сторонние зависимости
  • web/: Корневая директория web-сервера

Создание бандла

Я работаю в режиме девелопера, так что корректируйте пути к файлам конфига. Пусть это будет бандл для работы с блогами.
  • В файл app/config/AppKernel.php добавил свой бандл
    1. $bundles[] = new Blog\BlogBundle\BlogBundle();
    куда добавлять - сразу поймёте, там всё просто.

Array PHP MySQL

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

Для хранения данных удобно использовать массивы. В этой статье мы рассмотрим цикл Массив <-> База Данных <-> Массив Примеры будут приведены с использованием библиотеки PDO и устаревшего, но простого mysql_query. Начнём с массива. Предположим что у нас есть массив товаров примерно следующего содержания:
  1. $products = array(
  2. 'title' => 'Яблоки',
  3. 'price' => 17,
  4. 'catalog' => 1,
  5. 'count' => 114,
  6. ),
  7. 'title' => 'Груши',
  8. 'price' => 25,
  9. 'catalog' => 1,
  10. 'count' => 85,
  11. ),
  12. 'title' => 'Молоко',