Просмотр 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' => 'Молоко',

Первая буква в верхний регистр

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

В css есть замечательное свойство - text-transform, которое может иметь ряд значений, а именно: capitalize, lowercase, uppercase, none и inherit. Этими свойствами можно сделать заглавными первые буквы каждого слова, перевести в верхний регистр все символы, перевести в нижний, ничего не делать и взять значение от родителя. Но ни одно значение этого свойства не может сделать заглавной только одну первую букву строки. Разве что capitalize, которое сделает заглавной каждую букву каждого слова, что не всегда удобно. Обойти это можно средствами PHP при помощи такой вот функции: