Как работаете?
Anonymous Poll
12%
Фриланс
25%
В офисе
38%
На удаленке
12%
В гибридном формате
3%
За рубежом
9%
Другое (напишу в комментариях)
Как изощрённо очистить свойство после чтения
Пишите в комментариях, пропустили ли бы вы такой код на ревью и почему. 🤓
Пишите в комментариях, пропустили ли бы вы такой код на ревью и почему. 🤓
/**
* @return list<object>
*/
public function releaseEvents(): array
{
try {
return $this->events;
} finally {
$this->events = [];
}
}
Вакансия дня. Middle Backend|Full stack Developer
Полная занятость, удаленка
Зарплата: 150 - 200 т.р.
https://telegra.ph/Middle-BackendFull-stack-Developer-11-29
#remote #laravel #fullstack #php #fulltime
Полная занятость, удаленка
Зарплата: 150 - 200 т.р.
https://telegra.ph/Middle-BackendFull-stack-Developer-11-29
#remote #laravel #fullstack #php #fulltime
Telegraph
Middle Backend|Full stack Developer
Вакансия: Middle Full stack Developer; Компания: Rush Analytics; Уровень зп: 150 000 - 200 000 ₽; Занятость: 5/2, полная занятость; Формат: удаленная работа; ✌️Мы один из крупнейших в РФ сервисов в сфере аналитики рекламы и SEO. Rush Analytics — это облачное…
Какой вариант оптимальнее по памяти? (Какая переменная меньше?)
Anonymous Quiz
22%
Первый ($toStringAsKeyMemory)
78%
Второй ($toHexAsKeyMemory)
uniqid()
Функция uniqid — простой и быстрый способ получить ±уникальную криптографически небезопасную строку.
Как она работает? Функция берёт секунды и микросекунды, прошедшие с начала эпохи Unix, и конкатенирует их в шестнадцатиричном представлении:
Первый необязательный параметр
Второй необязательный параметр
Не стоит относиться к этой функции слишком серьёзно, но в простейших случаях, например, при именовании каких-нибудь временных штук, она избавит вас от 🚲.
Функция uniqid — простой и быстрый способ получить ±уникальную криптографически небезопасную строку.
Как она работает? Функция берёт секунды и микросекунды, прошедшие с начала эпохи Unix, и конкатенирует их в шестнадцатиричном представлении:
function uniqid(): stringТаким образом, выдаваемая строка имеет длину 13 символов (как посчитать длину самому). Если требуется меньше, то отрезать нужно с конца, так как наибольшей энтропией обладают последние знаки. Например, чтобы получить 8 символов, используем выражение
{
$time = gettimeofday();
return sprintf('%x%x', $time['sec'], $time['usec']);
}
substr(uniqid(), -8)
.Первый необязательный параметр
$prefix
эквивалентен конкатенации $prefix.uniqid()
.Второй необязательный параметр
$more_entropy
добавляет к результату псевдослучайное число, что снижает риск получить одинаковые значения в параллельных процессах. Такая строка содержит 23 символа и имеет вид 61e0e81a580527.28156047
.Не стоит относиться к этой функции слишком серьёзно, но в простейших случаях, например, при именовании каких-нибудь временных штук, она избавит вас от 🚲.
Тип parent
Недавно осознал, что
Недавно осознал, что
parent
можно использовать как тип в любых местах. Вроде и логично, но как-то странно... Согласитесь, вы бы поёжились, если бы увидели что-то подобное на ревью.final class ParentOverdose extends ArrayObjecthttps://3v4l.org/TDXEa
{
public function __construct(
public parent $iAmParent,
) {
parent::__construct();
}
public function iReturnParent(): parent
{
return new parent();
}
public function iAcceptParent(parent $parent): void
{
}
}
3v4l.org
Online PHP editor | output for TDXEa
Run your php code online; get statistics, vld output and compare output from all versions.
array_keys(['p', 'h', 'p'], 'p', true)
Anonymous Quiz
18%
ArgumentCountError: array_keys() expects exactly 1 argument, 3 given
10%
[0]
20%
[0, 2]
3%
[1, 3]
31%
[0, 1, 2]
17%
ArgumentCountError: array_keys() expects at most 2 arguments, 3 given
Если вы используете Deployer, то после успешного пятничного деплоя можете поиграть в Блэкджек из консоли.
./vendor/bin/dep blackjack
Пыхарь, используешь ли ты мутационное тестирование?
Anonymous Poll
74%
Что?
20%
Слышал про такое, не пробовал.
4%
Использую только в pet-проектах.
0%
Пробовали на работе, не удалось внедрить. Сейчас в комментариях расскажу, почему.
2%
Успешно используем в рабочем проекте.
Какой стиль именования используете для API на текущем проекте?
Anonymous Poll
65%
camelCase
21%
snake_case
6%
PascalCase
7%
kebab-case
Что такое Dependency Injection, и как он используется в PHP-приложениях?
Dependency Injection (DI) является паттерном проектирования, который используется в PHP-приложениях для управления зависимостями компонентов. Обычно зависимости передаются в класс через конструктор или методы инициализации. DI позволяет лучше управлять зависимостями, делая приложение более понятным и удобным для тестирования.
#вопросы_с_собеседований
#вопросы_с_собеседований
Что такое абстрактный класс и чем он отличается от интерфейса?
Абстрактный класс - это класс, который не может быть создан напрямую, он служит лишь в качестве базового для других классов. У него могут быть свойства и методы, которые могут быть переопределены в наследуемом классе. Абстрактные классы могут быть использованы для реализации шаблонов проектирования и их использование повышает повторное использование кода.
Интерфейс - это способ специфицировать, каким образом объекты должны взаимодействовать друг с другом. Интерфейс состоит только из методов и констант, которые не имеют тела. Интерфейсы могут использоваться в качестве связующего звена между компонентами, которые не имеют ничего общего кроме своей общей функциональности, а также в качестве одного из способов решения проблемы множественного наследования в PHP.
Что такое абстрактный класс и чем он отличается от интерфейса?
Интерфейс - это способ специфицировать, каким образом объекты должны взаимодействовать друг с другом. Интерфейс состоит только из методов и констант, которые не имеют тела. Интерфейсы могут использоваться в качестве связующего звена между компонентами, которые не имеют ничего общего кроме своей общей функциональности, а также в качестве одного из способов решения проблемы множественного наследования в PHP.
#вопросы_с_собеседований
Что такое объектно-ориентированное программирование (ООП) в PHP?
ООП - это парадигма программирования, в которой программа строится на основе объектов, которые являются экземплярами классов. В PHP объекты и классы создаются с помощью ключевых слов «class», "object", «public», «protected» и «private».
Что такое объектно-ориентированное программирование (ООП) в PHP?
#вопросы_с_собеседований
Расскажите, чем static отличается от self?
Это классический вопрос на позднее статическое связывание, который задают как джунам (реже), так и синьорам.
Решение:
Механизм позднего статического связывания (Late Static Binding) нужен для того, чтобы достучаться до статических свойств (методов), или констант родительского класса в дочерних, даже если они уже переопределены.
Применить этот механизм можно, например, когда нужно вынести общую логику работы с несколькими таблицами в БД в родительский класс.
Расскажите, чем static отличается от self?
Решение:
Механизм позднего статического связывания (Late Static Binding) нужен для того, чтобы достучаться до статических свойств (методов), или констант родительского класса в дочерних, даже если они уже переопределены.
Применить этот механизм можно, например, когда нужно вынести общую логику работы с несколькими таблицами в БД в родительский класс.
#вопросы_с_собеседований
Расскажите, что такое $_GET и $_POST и в чем их разница?
Вопрос классический и основополагающий, если кандидат не отвечает на него, значит скорее всего это «мимо».
$_GET — это великодушно созданный для нас языком суперглобальный ассоциативный массив, в котором находятся расфасованные GET параметры — то есть те, что передались в адресной строке или URL после знака ?
$_POST — такой же ассоциативный массив, но уже собранный из POST параметров — то есть тех, что передаются в теле запроса.
Вопрос на засыпку: (почему-то многие не отвечают) «а как еще можно получить POST параметры в PHP«?
Ответ: $_POST это форматированное и подготовленное для удобной работы тело запроса, но есть вариант получить тело запроса «как есть» с помощью:
file_get_contents('php://input')
Можно встретить такое, например, при создании telegram-бота.
Расскажите, что такое $_GET и $_POST и в чем их разница?
$_GET — это великодушно созданный для нас языком суперглобальный ассоциативный массив, в котором находятся расфасованные GET параметры — то есть те, что передались в адресной строке или URL после знака ?
$_POST — такой же ассоциативный массив, но уже собранный из POST параметров — то есть тех, что передаются в теле запроса.
Вопрос на засыпку: (почему-то многие не отвечают) «а как еще можно получить POST параметры в PHP«?
Ответ: $_POST это форматированное и подготовленное для удобной работы тело запроса, но есть вариант получить тело запроса «как есть» с помощью:
file_get_contents('php://input')
Можно встретить такое, например, при создании telegram-бота.
#вопросы_с_собеседований
Перечислите известные вам типы данных.
Хотя PHP это динамический язык, все же все данные в нем имеют четкие типы.
Скалярные типы:
✔️ bool
✔️ int
✔️ float (иногда встречается название double, что для php не имеет разницы)
✔️ string
Смешанные типы:
✔️ array
✔️ object
✔️ callable
✔️ iterable
Специальные типы:
✔️ resource
✔️ null
Подробнее о типах и псевдо-типах в документации .
Перечислите известные вам типы данных.
Скалярные типы:
✔️ bool
✔️ int
✔️ float (иногда встречается название double, что для php не имеет разницы)
✔️ string
Смешанные типы:
✔️ array
✔️ object
✔️ callable
✔️ iterable
Специальные типы:
✔️ resource
✔️ null
Подробнее о типах и псевдо-типах в
www.php.net
PHP: Hypertext Preprocessor
PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites in the world.
#вопросы_с_собеседований
Что такое интерфейсы?
Интерфейс, в отличие от абстрактного класса, не может содержать поля и методы, имеющие реализацию – он описывает только сигнатуры метода, которые должны реализовать его наследники. В отличие от того же абстрактного класса, класс может реализовывать одновременно множество интерфейсов.
Хорошая статья на хабре.
Что такое интерфейсы?