twig

Как установить twig?

composer require twig/twig

Как подключить twig?

$loader = new Twig_Loader_Filesystem('./templates');
$twig = new Twig_Environment($loader, array(
    'cache' => './cache',
//    'debug' => true,
));

$template = $twig->load('index.html.twig');

echo $template->render();

Как добавить глобальную переменную?

$twg->addGlobal('siteName', 'Тест');

Как добавить кастомные функции, проверки, фильтры?

/**
 * Class MyTwigExtension
 */
class MyTwigExtension extends \Twig_Extension
{
    /**
     * @return array
     */
    public function getTests()
    {
        return array(
            new \Twig_SimpleTest('instance_of', array($this, 'isInstanceOfTest'))
        );
    }

    /**
     * @return array
     */
    public function getFunctions()
    {
        return array(
  • y - stage this hunk (добавить этот кусок в индекс)
  • n - do not stage this hunk (не добавлять этот кусок в индекс)
  • a - stage this and all the remaining hunks in the file (добавить этот и все оставшиеся куски в этом файле в индекс)
  • d - do not stage this hunk nor any of the remaining hunks in the file (не добавлять в индекс ни этот, ни последующие куски в этом файле)
  • g - select a hunk to go to (выбрать кусок и перейти к нему)
  • / - search for a hunk matching the given regex (поиск куска по регулярному выражению)
  • j - leave this hunk undecided, see next undecided hunk (отложить решение для этого куска, перейти к следующему отложенному куску)
  • J - leave this hunk undecided, see next hunk (отложить решение для этого куска, перейти к следующему куску)
  • k - leave this hunk undecided, see previous undecided hunk (отложить решение для этого куска, перейти к предыдущему отложенному куску)

Как установить установщик?

php -r "readfile('https://symfony.com/installer');" > symfony

Как установить symfony?

symfony new project-name

Как установить старый symfony?

symfony new old-project-name 2.8

Как настроить PhpStorm?

  • устанавливаем плагин Symfony Plugin
  • устанавливаем плагин PHP Annotations
  • ставим галочку Languages & Frameworks > PHP > Symfony > Enable Plugin for this Project
  • на этой же вкладке меняем пути на var/cache/dev/appDevUrlGenerator.php и var/cache/dev/translations

1. Устанавливаем

composer require monolog/monolog

2. Подключаем, если composer autoload ещё не подключен

require_once 'vendor/autoload.php';

3. Создаём логгер в нашем крон-скрипте

use Monolog\Logger;
use Monolog\Handler\StreamHandler;
$logger = new Logger('main');
$logger->setHandlers(
    array(
        new StreamHandler('php://stdout'),
        new StreamHandler('php://stderr', Logger::ERROR),
    )
);
// это сообщение будет сохранено в файл
$logger->info('Info message');
// это сообщение будет сохранено в файл и отправлено на почту
$logger->error('Error message'); 

Я люблю слушать подкасты. И ещё люблю автоматизацию. И кроме php интересуюсь питоном. Поэтому в качестве пет проджекта я написал скрипт который скачивает свежие выпуски подкастов забирая их из rss лент, ссылки на которые можно пачкой сохранить в настройках. Скрипт раскладывает по папкам подкастов 3 последних выпуска (в виде mp3 файлов), а старые выпуски удаляет. И уведомляет на почту об успехе или об ошибках.

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

Всё это я сложил на гитхаб https://github.com/hobocta/podcast-downloader.

Сделал простенький сервис генерирующий случайные пароли. Позволяет копировать пароли в буфер по клику. Удобная генерация новых паролей в один клик. Ничего лишнего. Приглашаю пользоваться - http://pwd.site-home.ru/

Код тут https://github.com/hobocta/pwd-service

Страницы