Если видео недоступно для просмотра, попробуйте выключить блокировщик рекламы.

В PHP встроен REPL, который позволяет быстро поэкспериментировать с языком.

$ php -a
Interactive shell

# Некоторые используют его как калькулятор
php > echo 3 ** 2;
9
# Можно вызывать любые функции и смотреть что получится
php > echo array_sum([1, 3, 2]);
6
php >

Для разработчиков, которые никогда не имели с ним дело, может показаться что REPL это игрушка, но это не так. Во многих языках, программисты значительное время проводят в REPL постоянно исследуя код. В мире Lisp языков даже есть понятие REPL-driven development.

Сейчас ситуация в PHP стала меняться. В первую очередь благодаря PsySH. Это тоже REPL для PHP, но в отличие от встроенного, он значительно мощнее и ориентирован на удобство отладки и исследования (интроспекции) кода. Одна из приятных особенностей этого REPL, в том, что не нужно ставить точку с запятой в конце выражений и результат любого выражения автоматически выводится на экран. А еще цветной вывод.

Psy Shell v0.9.9 (PHP 7.3.7 — cli) by Justin Hileman
>>> 3 ** 2
=> 9
>>> array_sum([1, 3, 2])
=> 6

PsySH умеет конфигурироваться, что позволяет при его старте прогружать в память любой код на PHP. Благодаря этому, разработчики Laravel смогли создать REPL, который позволяет экспериментировать не только с обычными функциями, но и со всем фреймворком. Этот REPL называется Tinker. Начиная с текущего момента и на протяжении всего курса, мы постоянно будем использовать Tinker для проверки работы любых аспектов фреймворка.

Запускается Tinker как команда Artisan:

$ php artisan tinker
Psy Shell v0.9.9 (PHP 7.3.7 — cli) by Justin Hileman
>>> array_reverse([1, 2, 3, 4])
=> [
     4,
     3,
     2,
     1,
   ]

Из приветствия видно что мы имеем дело с PsySH. Здесь можно работать как с самим PHP, так и с Laravel. В последний включено множество функций, не имеющих прямого отношения к вебу, но упрощающих работу:

>>> Str::ascii('трансляция в аски')
=> "translyatsiya v aski"
>>> last([3, 2, 8])
=> 8

Tinker и Psysh добавляют несколько полезных функций от себя. Эти функции позволяют посмотреть историю команд, документацию по функциям, увидеть их содержимое и многое другое. Ниже несколько примеров:

>>> show last # посмотреть определение функции
  > 726|     function last($array)
    727|     {
    728|         return end($array);
    729|     }

>>> history # история
75: Str::ascii('трансляция в аски')
76: last([3, 2, 8])
77: show last

>>> dd([1, 2, [3, 2, ['show', ['one' => 'two']]]]) # вывести красиво данные
array:3 [
  0 => 1
  1 => 2
  2 => array:3 [
    0 => 3
    1 => 2
    2 => array:2 [
      0 => "show"
      1 => array:1 [
        "one" => "two"
      ]
    ]
  ]
  ]

>>> doc head # посмотреть документацию по функции
function head($array)

Description:
  Get the first element of an array. Useful for method chaining.

Param:
  array  $array

Return:
  mixed

Самое интересное при работе с Tinker начнется позже, когда мы познакомимся с ORM и тестами.

Самостоятельная работа

  1. Поэкспериментируйте в thinker с функциями описанными в статье
Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →