Skip to content

Instantly share code, notes, and snippets.

@1234ru
1234ru / nginx-php-win.md
Last active September 11, 2024 19:20
Установка nginx и PHP на Windows

Установка nginx

  1. Скачиваем отсюда https://nginx.org/ru/download.html и распаковываем куда-нибудь.

  2. Дальше читаем тут https://nginx.org/ru/docs/windows.html ВНИМАНИЕ: команду start nginx обязательно даем прямо из каталога, в котором лежит nginx.exe, в противном случае при дальнейшей работе будут ошибки (все пути в конфигурации прописаны как относительные, только поменяв их все, можно запускать откуда угодно). Вообще рекомендуется держать консоль открытой в этом каталоге до самого конца выполнения инструкций, однако для работы nginx это необязательно - если её закрыть, он продолжит работать.

  3. Открываем http://localhost/ - должно заработать.

Загрузка сервера MySQL и подготовка к запуску

  1. Скачиваем Community Server в виде zip-архива.
    (Если пугают новшества последних версий, можно остановиться на 5.7. Например, 5.7.26-winx64.)
    На странице загрузки можно перейти по ссылке No thanks, just start my download в нижней части страницы.

  2. Распаковываем куда-нибудь.

  3. Удаляем папку lib (она содержит исходный код для самостоятельной компиляции и при работе сервера не требуется). Также можно удалить файлы bin/*.pdb (они нужны только для отладки исполняемых файлов MySQL и при обычной работе не требуются).

@1234ru
1234ru / traits-interfaces.md
Last active June 5, 2024 22:27
Про интерфейсы (interfaces) и трейты (traits) в PHP

Все методы, объявленные в интерфейсе, фактически являются абстрактными: все их необходимо явно определить в дочернем классе. То есть, описать какую-то универсальную логику с помощью интерфейса не получится.

При этом

Дочерний класс должен реализовать все методы, описанные в интерфейсе, иначе произойдёт фатальная ошибка.

Кроме того, в интерфейсах нельзя объявлять свойства. Можно только методы и константы.

# This script should be run from one of .git/hooks files.
# Current directory will be .git
# git commands don't need directory be changed to
# project root.
# composer command does need.
export composer_exec="php ~/composer"
export command="git diff --name-only $oldrev $newrev -- composer.lock"
read oldrev newrev refname
export was_changed=$($command)
@1234ru
1234ru / arrays-unpacking.md
Last active May 11, 2024 14:21
PHP: распаковка массивов при передаче функциям и слиянии массивов

Распаковку массивов можно использовать вместо array_merge():

$a = [ 1 ];
$b = [ 2 ];
// $c и $d ниже будут идентичны
$c = array_merge($a, $b, [3]);
$d = [ ...$a, ...$b, 3 ];
@1234ru
1234ru / php-class-storing-default-settings.md
Last active May 9, 2024 14:35
Для хранения настроек по умолчанию можно использовать то же свойство объекта, которое будет их хранить
class SomeClass {
    private $settings = [
        'a' => 1,
        'b' => 2,
    ];

    function __construct($options)
    {
 $this->settings = array_replace_recursive(
@1234ru
1234ru / git.md
Last active April 16, 2024 17:17
Полезное при работе с git

Отмена изменений

Вернуть файл к состоянию последнего коммита (аналог svn revert) можно командой git checkout файл. Уточнение: файл будет возвращен к зафиксированному состоянию, если после коммита была явно дана команда git add файл. То есть, откатываются изменения, сделанные после git commit или git add. Если файл был удален, то нужно указать версию; например git checkout HEAD файл.

Так можно откатить и всю папку (в т.ч. рабочий каталог): git checkout ..

Для отмены изменений на уровне рабочей копии служит команда git reset. Она "отматывает" историю изменений назад до указанного момента (в том числе отменяет коммиты), не трогая физические файлы:

  • git reset файл
@1234ru
1234ru / symbolic-links-vs-direct-assignment-in-cycle.php
Last active March 28, 2024 21:44
Memory usage is unaffected by using a symbolic link instead of cyclic direct assignment
@1234ru
1234ru / git-bash-win.md
Last active February 12, 2024 14:24
Git и bash под Windows

Установочный пакет можно скачать здесь https://git-scm.com/download/win (см. также https://gitforwindows.org/).

Далее будет рассмотрена работа с portable-версией.

bash

В пакете присутствует не только сам git, но и средства для работы в командной строке, которые позволяют сделать рабочий процесс практически полностью идентичным таковому в Unix-системах. (При этом, в отличие от подсистемы Windows for Linux, нет ни необходимости устанавливать дополнительные компоненты ОС, ни жёстких требований к новизне версии Windows).

В первую очередь, это оболочка bash, которая поддерживает цвета и комбинации клавиш, а также сопутствующие программы из числа наиболее часто используемых в Linux (ls, grep, curl, vim, ssh(!) и пр.) делают возможными многие привычные операции.