MVP

Minimum viable product - минимально жизнеспособный продукт. Подход в создании продукта, который позволяет как можно раньше получить пользовательский фидбэк, чтобы принимать правильные решения относительно развития продукта. Снижаем затраты и риски на то, что пользователям не нужно, максимизируем усилия на перспективных гипотезах.

Tty и pty

Tty обозначает телетайп, т. е. терминал. Например, порты компьютера, к которым подключены терминалы.

Pty обозначает псевдотелетайп, т. е. программа, которая ведёт себя как терминал, т. е. имеет интерфейсы для ввода и вывода, например, winpty для git bash.

Установить 7-zip.

Переименовать первую часть архива из .tar.gz в .tar.gz.001

Переименовать остальные части, например, .tar.gz.1 в .tar.gz.002 и т. д.

Выделить все части архива, нажать правую кнопку мыши и выбрать в 7-zip пункт меню "Распаковать"

Нажать "OK"

Допустим мы получили данные о текущем состоянии счёта пользователя (по первичному ключу) из mysql, выполнив запрос:

SELECT * FROM `balance` WHERE `user_id` = 1;

Теперь, когда мы знаем сколько у пользователя на счету, нам, например, нужно добавить на счёт определённую сумму. Считаем новую сумму и отправляем запрос на обновление строки:

Чтобы объекты, указанные в конструкторе класса создавались и подгружались автоматически можно использовать autowiring в контейнере зависимостей от symfony.

Устанавливаем DI компонент от symfony:

composer require symfony/dependency-injection

Описываем зависимости:

// создаём строитель контейнера
$container = new \Symfony\Component\DependencyInjection\ContainerBuilder();

// добавляем публичные зависимости с автозагрузкой
$container->autowire(Config::class)->setPublic(true);
$container->autowire(Database::class)->setPublic(true);

// компилируем контейнер
$container->compile();

Опишем простой класс Config, который берёт настройки из внешнего файла:

Можно добавить пользовательские обработчики с помощью следующих функций.

В конце работы скрипта:

void register_shutdown_function ( callable $callback [, mixed $parameter [, mixed $... ]] )

При ошибке:

mixed set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] )

При исключении:

callable set_exception_handler ( callable $exception_handler )
/**
 * @SuppressWarnings(PHPMD.UnusedFormalParameter)
 */

Unused code:

  • UnusedPrivateField
  • UnusedLocalVariable
  • UnusedPrivateMethod
  • UnusedFormalParameter

Naming:

  • ShortVariable
  • LongVariable
  • ShortMethodName
  • ConstructorWithNameAsEnclosingClass
  • ConstantNamingConventions
  • BooleanGetMethodName
  • VariableNamingConventions
  • MethodNamingConventions
  • ClassNamingConventions
  • AbstractNaming
  • AvoidFieldNameMatchingTypeName
  • AvoidFieldNameMatchingMethodName
  • NoPackage
  • MisleadingVariableName

Design:

  • ExitExpression
  • EvalExpression
  • GotoStatement
  • NumberOfChildren
  • DepthOfInheritance
  • CouplingBetweenObjects
  • DevelopmentCodeFragment

Controversial:

Сравнивает два выражения. Отдаёт 1, если первое выражение больше, 0 если они равны, -1 если больше правое выражение.

echo 2 <=> 1; // 1
echo 3 <=> 3; // 0
echo 4 <=> 5; // -1

Точно так же сравнивает числа с плавающей точкой:

echo 7.2 <=> 7.1; // 1
echo 7.3 <=> 7.3; // 0
echo 7.4 <=> 7.5; // -1

И строки:

echo 'abd' <=> 'abc'; // 1
echo 'abc' <=> 'abc'; // 0
echo 'abc' <=> 'abe'; // -1

И массивы:

echo array(2) <=> array(1); // 1
echo array(3) <=> array(3); // 0
echo array(1, 4) <=> array(1, 5); // -1

А так же итерабельные объекты:

Страницы