Какой вариант оптимальнее по памяти? (Какая переменная меньше?)
Anonymous Quiz
22%
Первый ($toStringAsKeyMemory)
78%
Второй ($toHexAsKeyMemory)
🤔11👎4👏2❤1
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.
❤1👍1
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
👍5
Если вы используете Deployer, то после успешного пятничного деплоя можете поиграть в Блэкджек из консоли.
./vendor/bin/dep blackjack
👍4
Пыхарь, используешь ли ты мутационное тестирование?
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 позволяет лучше управлять зависимостями, делая приложение более понятным и удобным для тестирования.
#вопросы_с_собеседований
👍3🤓1
#вопросы_с_собеседований
Что такое абстрактный класс и чем он отличается от интерфейса?
Абстрактный класс - это класс, который не может быть создан напрямую, он служит лишь в качестве базового для других классов. У него могут быть свойства и методы, которые могут быть переопределены в наследуемом классе. Абстрактные классы могут быть использованы для реализации шаблонов проектирования и их использование повышает повторное использование кода.
Интерфейс - это способ специфицировать, каким образом объекты должны взаимодействовать друг с другом. Интерфейс состоит только из методов и констант, которые не имеют тела. Интерфейсы могут использоваться в качестве связующего звена между компонентами, которые не имеют ничего общего кроме своей общей функциональности, а также в качестве одного из способов решения проблемы множественного наследования в PHP.
Что такое абстрактный класс и чем он отличается от интерфейса?
Интерфейс - это способ специфицировать, каким образом объекты должны взаимодействовать друг с другом. Интерфейс состоит только из методов и констант, которые не имеют тела. Интерфейсы могут использоваться в качестве связующего звена между компонентами, которые не имеют ничего общего кроме своей общей функциональности, а также в качестве одного из способов решения проблемы множественного наследования в PHP.
👍4❤1
#вопросы_с_собеседований
Что такое объектно-ориентированное программирование (ООП) в PHP?
ООП - это парадигма программирования, в которой программа строится на основе объектов, которые являются экземплярами классов. В PHP объекты и классы создаются с помощью ключевых слов «class», "object", «public», «protected» и «private».
Что такое объектно-ориентированное программирование (ООП) в PHP?
❤1🤯1
#вопросы_с_собеседований
Расскажите, чем static отличается от self?
Это классический вопрос на позднее статическое связывание, который задают как джунам (реже), так и синьорам.
Решение:
Механизм позднего статического связывания (Late Static Binding) нужен для того, чтобы достучаться до статических свойств (методов), или констант родительского класса в дочерних, даже если они уже переопределены.
Применить этот механизм можно, например, когда нужно вынести общую логику работы с несколькими таблицами в БД в родительский класс.
Расскажите, чем static отличается от self?
Решение:
Механизм позднего статического связывания (Late Static Binding) нужен для того, чтобы достучаться до статических свойств (методов), или констант родительского класса в дочерних, даже если они уже переопределены.
Применить этот механизм можно, например, когда нужно вынести общую логику работы с несколькими таблицами в БД в родительский класс.
❤1👍1
#вопросы_с_собеседований
Расскажите, что такое $_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-бота.
❤1🤣1
#вопросы_с_собеседований
Перечислите известные вам типы данных.
Хотя 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.
#вопросы_с_собеседований
Что такое интерфейсы?
Интерфейс, в отличие от абстрактного класса, не может содержать поля и методы, имеющие реализацию – он описывает только сигнатуры метода, которые должны реализовать его наследники. В отличие от того же абстрактного класса, класс может реализовывать одновременно множество интерфейсов.
Хорошая статья на хабре.
Что такое интерфейсы?
🔥2❤1
#вопросы_с_собеседований
Зачем нужно ключевое слово final?
Разместив ключевое слово final перед объявлениями методов класса, можно предотвратить их переопределение в дочерних классах, а в случае объявления самого класса как final — его невозможно будет унаследовать. Такие классы и методы призваны защитить чувствительный код от изменений, а сам код становится проще поддерживать. Подробнее в документации .
Зачем нужно ключевое слово final?
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.
👍6❤1
#вопросы_с_собеседований
Что такое PSR? Какова их цель?
PSR (PHP Standards Recommendations) — это набор рекомендаций по программированию на языке PHP. Основное назначение — предоставить проверенные общие концепции, чтобы сделать разработку простой и удобной, повысить надежность и работоспособность продуктов.
Стандарты PSR поделены на части. Каждый содержит информацию о том, как нужно выполнять задачи. Например, ставить переносы строк, называть переменные, реализовывать автозагрузку. За каждую часть отвечает свой стандарт. Каждый начинается с аббревиатуры PSR, после которой идет номер. Например, PSR-1 или PSR-4.
Подробнее про каждый можно почитать здесь .
Что такое PSR? Какова их цель?
Стандарты PSR поделены на части. Каждый содержит информацию о том, как нужно выполнять задачи. Например, ставить переносы строк, называть переменные, реализовывать автозагрузку. За каждую часть отвечает свой стандарт. Каждый начинается с аббревиатуры PSR, после которой идет номер. Например, PSR-1 или PSR-4.
Подробнее про каждый можно почитать
www.php-fig.org
PHP Standards Recommendations - PHP-FIG
We're a group of established PHP projects whose goal is to talk about commonalities between our projects and find ways we can work better together.
😁2
#вопросы_с_собеседований
Что такое SPL?
Standard PHP Library — набор классов (структуры данных, итераторы, исключения, классы для обработки файлов), интерфейсов и функций для решения стандартных задач. Как правило, знание наизусть библиотеки не требуется, но понимать из чего она состоит стоит хотя бы для личного развития. Подробнее в документации — www.php.net/manual/ru/book.spl.php
Что такое SPL?
❤1
#вопросы_с_собеседований
Что такое инкапсуляция/наследование/полиморфизм?
Инкапсуляция . Это механизм, который объединяет данные и методы, манипулирующие этими данными, и защищает их от внешнего вмешательства или неправильного использования. Когда методы и данные объединяются таким способом, создается объект. Т.е. переменные состояния объекта скрыты от внешнего мира. Изменение состояния объекта (его переменных) возможно ТОЛЬКО с помощью его собственных методов. Можно сказать, что инкапсуляция подразумевает под собой сокрытие данных, что позволяет эти данные защитить.
Наследование. Это процесс, посредством которого один объект может наследовать свойства другого объекта и добавлять к ним черты, характерные только для него.
Полиморфизм. Это свойство, которое позволяет одно и то же имя использовать для решения нескольких технически разных задач. Проще говоря, концепцией полиморфизма является идея “один интерфейс, множество реализаций”. Это означает, что можно создать общий интерфейс для группы близких по смыслу действий.
Что такое инкапсуляция/наследование/полиморфизм?
Наследование. Это процесс, посредством которого один объект может наследовать свойства другого объекта и добавлять к ним черты, характерные только для него.
Полиморфизм. Это свойство, которое позволяет одно и то же имя использовать для решения нескольких технически разных задач. Проще говоря, концепцией полиморфизма является идея “один интерфейс, множество реализаций”. Это означает, что можно создать общий интерфейс для группы близких по смыслу действий.
👍6