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

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

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

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

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

Мой блог в проекте ГОЛОС

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

Уважаемые читатели, я так-же веду свой блог в проекте ГОЛОС. Там будут не только технические статьи, но и материалы на отвлечённые темы.

Проект ГОЛОС завязан на своей собственной криптовалюте. Мне это показалось интересным, посмотрим как оно выстрелит)

Пользуясь случаем - приглашаю всех в ГОЛОС

Возможности console.log

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

Для вывода отладочных сообщений в JavaScript используют команду console.log, о ней знают все, кто хоть сколько-нибудь связан с web-разработкой.

Она выводит строку, число или объект.

Например:

  1. var m = {q:4,d:6};
  2. console.log(m);

Выведет:

Но можно задать отладочным сообщениям оформление.

Например:

  1. console.log("%c%s","color: red; background: yellow; font-size: 20px;","Debug message")

Выведет:

Просмотр 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. /**

Подружить Admin menu и Toolbar

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

Чтобы подружить эти 2 модуля - включайте:
  • Administration menu
  • Administration menu Toolbar style
  • Toolbar
Создавайте свой модуль и в нём пропишите следующий хук:
  1. function mymodule_theme_registry_alter(&$theme_registry) {
  2. $theme_registry['toolbar']['path'] = $theme_registry['toolbar']['theme path'] = drupal_get_path('module', 'mymodule');
  3. }
Затем в папку модуля положите файл с именем toolbar.tpl.php и содержимым:
  1. <div id="toolbar" class="<?php print $classes; ?> clearfix"></div>

Colorbox node + Webform + Redirect

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

Если поставить модули colorbox, colorbox_node и webform - то можно чудесным образом выводить форму в модульном окне. Для этого создавайте вебформу, ставьте чекбокс "Доступен как блок" Затем в нужном месте прописывайте ссылку
  1. <a class="link colorbox-node" href="/node/304?width=420&height=150" >Закажи звонок!</a>
Такая ссылка откроет вебформу(nid=304) в колорбоксе размерами 420х150 пикселей. Однако, если этой форме добавить редирект после сабмита - то он не сработает. Для этого добавьте get параметр destination

Panels + Statistics + Drupal 8

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

Модуль статистики(тот что в ядре) ""цепляется за ноды в hook_ENTITY_TYPE_view. Если вы выводите ноды через панели(Pages) - то этот хук соответственно не будет работать. Разрулить проблему можно если самому подрубить библиотеку модуля statistics к страницам материалов. Я сделаю это в hook_page_attachments. Код хука
  1. /**
  2.  * Implements hook_page_attachments().
  3.  */
  4. function module_page_attachments(array &$page) {
  5. $request = \Drupal::request()->getRequestUri();
  6. $nid = NULL;
  7. if (substr($request, 0, 6) == '/node/') {
  8. $nid = substr($request, 6);
  9. } else {