# запускаем фоновый процесс пхп
php -r 'passthru(\"nohup sleep 60 >/dev/null 2>/dev/null &\");'
# nohup - запуск в фоне
php -r "shell_exec(\"nohup sleep 60 >/dev/null 2>/dev/null &\");"
# межпроцессорные потоки
php -r "\$proc=popen(\"sleep 50 2>&1 &\", \"w\"); fwrite(\$proc, 50); pclose(\$proc);"
# не блокирует процесс-родитель
<?php
$spec = [
0 => ["pipe", "r"], // stdin
1 => ["pipe", "w"], // stdout
];
// Запускаем процесс
$proc = proc_open("php 1.php > 1.log", $spec, $pipes);https://front-line-php.com/cheat-sheet
https://front-line-php.com/cheat-sheet
# выборка случайных записей
$row_count = mysql_result(mysql_query('SELECT COUNT(*) FROM tTable;'), 0);
$query = array();
while (count($query) < 10) {
$query[] = '(SELECT * FROM tTable LIMIT '.rand(0, $row_count).', 1)';
}
$query = implode(' UNION ', $query);
$res = mysql_query($query);
Сортировка пузырьком
for ($i = 0; $i < count($m); $i++) {
for($j=$i; $j < count($m); $j++) {
if ($m[$i] > $m[$j]) {
$tmp = $m[$i];
$m[$i] = $m[$j];
$m[$j] = $tmp;
}
}
}
Поиск по массиву
$ar = [];
foreach ($data as $el) {
if (isset($el["lastName"]) && preg_match("/($search|$search2)/mui", $el["lastName"])) {
$ar[] = $el;
}
}
return $ar;
// $ar = [];
// foreach ($data as $el) {
// if (isset($el["lastName"]) && in_array(mb_strtolower($el["lastName"]), [$search, $search2])) {
// $ar[] = $el;
// }
// }
// return $ar;
я думаю так: должна быть какая-то тривиальная задача, типа написать rest api для того же кинотеатра и смотреть что выйдет
джун не знает как решать задачу
мидл знает только одно решение задачи и возможно сможет это обосновать
сеньор может предложить несколько вариантов задачи и обосновать каждый, типа в условиях окружения предложить самый оптимальный
Как сохранить порядок полей объекта сериализованного в JSON ?
<?php
echo true + true;
?>
<script>
var a ='5' - 3;
var b ='5' + 3;
var c ='5' + - 3;
alert(a);
alert(b);
alert(c);
</script>
1) Расскажите о замыканиях в PHP. Приведите примеры, когда, почему и как они могут быть использованы?
замыкания специальный тип анонимных функций, которые позволяют сохранить переменные на момент их вызова
2) Расскажите о пространствах имён в PHP и о том, почему они полезны
3) Что такое трейты (traits)? Опишите их основные характеристики и расскажите, чем они полезны. Приведите пример объявления трейты и класса, использующего несколько трейтов.
4) Расскажите, как связаны между собой php://input и $POST и как получить доступ к потоку php://input?
5) Назовите не менее пяти суперглобальных переменных, имена которых начинаются с $, и дайте им определение. Расскажите об их связи с переменной $GLOBALS.
6) Объясните назначение и применение магических методов get, set, isset, unset, call, и callStatic. Когда, как и почему их стоит использовать (или не использовать)?
7) Чему будет равен $x после выполнения выражения $x = 3 + ‘15%‘ + ‘$25‘?
8) Объясните назначение ключевого слова static при вызове метода или обращении к свойству. Расскажите, когда и зачем его нужно использовать, а также чем оно отличается от ключевого слова self. Приведите пример.
9) Что такое генераторы? Когда их можно использовать вместо итераторов и обычных массивов? Для чего нужны ключевые слова yield и send?
генераторы — это функции, содержащие ключевое слово yield и позволяющие создавать собственные итераторы, которые потом удобно использовать в циклах foreach.
10) Паттерны проектирования. Какие паттерны проектирования вы знаете? Какие часто используете? Опишите любой на выбор паттерн проектирования.
11) Что такое абстрактные классы и интерфейсы? В чем их различие?
12) Что такое Service Locator и DI? для чего они используются в Yii?
13) Что такое Active Record, зачем он нужен?
14) Какие способы доступны в Yii для защиты от всевозможных атак (XSS, CSRF, SQL injection)
15) Какие бывают индексы и для чего они нужны?
16) Что такое транзакция?
17) Какие движки Mysql вы знаете, зачем они нужны?
В PHP 7.1 появилось несколько очень приятных нововведений: тип void для возвращаемых значений, iterable, возможность вернуть null для типизированных возвращаемых значений, область видимости констант и прочее
. Чтобы такого не было, взрослые умные дядьки описали стандарт, который позволяет подключать сторонние библиотеки без проблем, главное чтобы организация классов в них соответствовала стандарту
PSR-0 (устарел уже лет 10 как) или
PSR-4. В чём суть требований описанных в стандартах:
- Каждая библиотека должна жить в собственном пространстве имён (т.н. vendor namespace)
- Для каждого пространства имён должна быть создана собственная папка
- Внутри пространства имён могут быть свои подпространства — тоже в отдельных папках
- Один класс — один файл
- Имя файла с расширением
.php должно точно соответствовать имени класса
— ООП – абстракция,наследование, инкапсуляция и полиморфизм
Инкапсуляция – это когда переменные в объекте, а доступ к ним через методы.
Полиморфизм – возможность описывать разные методы, с одинаковым именем . для параметров int и float, в php нормального полиморфизма нет.
Наследование – копирование свойств и методов базовых классов, с возможностью их переопределения и расширения.
Абстракция – создание свойств, методов, классов, которые обязательно должны переопределяться наследниками до непосредственного использования.
10. Что такое класс?
Класс - это модель ещё не существующей сущности (объекта). Класс фактически описывает ус-
тройство объекта, являясь своего рода чертежом.
11. А объект?
Объект - это совокупность данных и методов для их обработки. Данные и методы называются
членами класса. Вообще, объектом является все то, что поддерживает инкапсуляцию.
12. Чем отличается класс от объекта?
Класс - это тип данных, а объект - экземпляр типа класс.
4. Что такое виртуальный метод?
Виртуальный метод в объектно-ориентированном программировании - это метод класса, кото-
рый может быть переопределён в классах-наследниках так, что конкретная реализация метода
для вызова будет определяться во время исполнения. Виртуальные методы - один из важней-
ших приёмов реализации полиморфизма.
А зачем такое нужно?
Чтобы программисту необязательно было знать точный тип объекта для работы с ним через
виртуальные методы, достаточно лишь знать, что объект принадлежит классу или наследнику
класса, в котором метод объявлен.
Виртуальные методы позволяют создавать общий код, который может работать как с объекта-
ми базового класса, так и с объектами любого его класса-наследника. При этом базовый класс
определяет способ работы с объектами и любые его наследники могут предоставлять конкрет-
ную реализацию этого способа.
9. Может ли быть конструктор виртуальным?
Нет, конструкторы не могут быть виртуальными.
7. Как называется способность объекта скрывать свои данные и реализацию от других объектов системы?
Инкапсуляция.
8. Какие механизмы в ОО языках обычно позволяют обеспечить инкапсуляцию объектов?
Модификаторы доступа.
5. В чем различия между четвертой и пятой версиями PHP?
Дурацкий и явно устаревший вопрос, но его почему-то до сих пор задают. Перечислять все, не
нужно, достаточно сказать, что:
В пятой версии были добавлены следующие возможности:
- ключевое слово static
- Ключевое слово final
- Абстрактные классы
- Интерфейсы
- Магические методы
- Клонирование объектов
И многое другое.
Всё это благодаря использованию движка Zend Engine 2.
9. Что такое static функция и чем она отличается от “обычной” (не static)?
Static принадлежит классу, а не экземпляру класса. И вызывается у класса, а не у объекта, т.е.
напрямую.
15. Поддерживает ли РНР множественное наследование?
Нет, PHP не поддерживает множественное наследование. То есть у производного класса может
быть только один родительский. Но с помощью “магической” функции __call() его можно эмули-
ровать.
16. Какая разница между require(), require_once(), include() и include_once()?
Отличие между require() и include() следущее: require() возвращает FATAL ERROR, если файл не
найден, include() же возвращает только WARNING
В отличие от конструкции
require конструкция
include позволяет включать файлы в код PHP скрипта
во времявыполнения сценария. Синтаксис конструкции include выглядит следующим образом:
Таким образом, целесообразнее использовать конструкцию
require там, где не требуется динамическое включение файлов в сценарий, а конструкцию
include использовать только с целью динамического включения файлов в код PHP скрипта.
18. Что делает функция eval() ?
eval() вычисляет строку как PHP-код.
27. Есть ли разница между одинарными и двойными кавычками в PHP?
В двойных кавычках данные “парсятся”, а в одинарных - нет.
18. Можно ли создать экземпляр абстрактного класса?
Если язык программирования позволяет, то можно, например в Delphi. Но, поскольку, мы гово-
рим о РНР, то создать экземпляр абстрактного класса нельзя.
19. Какая разница между абстрактным классом и интерфейсом?
Один из самых любимых вопросов!
Абстрактный класс - это класс, который имеет хотя бы 1 абстрактный (не определенный) метод
и обозначается как abstract. Интерфейс - такой же абстрактный класс, только в нем не может
быть свойств и не определены тела у методов.
Кроме того, что абстрактный класс наследуется (etxends), а интерфейс реализуется (implements).
Вот и возникает разница между ними, что наследовать мы можем только 1 класс, а реализовать
сколько угодно.
20. Зачем нужен интерфейс, если есть абстрактный класс?
Затем, что можно унаследоваться только от одного абстрактного класса, но реализовать мно-
жество интерфейсов. Плюс, в качестве приятного довеска, ВСЕ методы, описанные в интерфей-
се, ДОЛЖНЫ быть реализованы в классе, а в абстрактном классе их нужно для этой цели специ-
ально отмечать
15. Чем отличается процедурный подход от объектно-ориентированного?
Процедурный подход предоставляет возможность программисту определять каждый шаг в
процессе решения задачи. Задачи разбиваются на шаги и решаются шаг за шагом. Кроме того
данные лежат отдельно от функций, для каждой новой сущности приходится писать свой набор
функций с немного другими именами.
А ООП предполагает заключение внутри одного класса, как данных, так и методов их обработки.
При этом создание новой сущности не вызывает необходимости переписывать все методы, а
только нужные (это называется “наследование”).
16. Какие еще есть парадигмы (модели, подходы) программирования кроме ООП?
Из тех, что наиболее часто встречаются: функциональная, аспектно-ориентированная и процедурная.
15. Поясни разницу между HTTP методами GET и POST.
GET передает данные серверу используя URL, а POST передает данные, используя тело HTTP
запроса.
Длина URL’а ограничена 1024 символами, что и будет верхним пределом для данных, которые
можно отослать GET’ом. POST может отправлять гораздо большие объемы данных.
Кроме того, передача данных методом POST более безопасна, чем методом GET, так как секрет-
ные данные (например пароль) не отображаются напрямую в web-клиенте пользователя (в от-
личии от URL, который виден почти всегда).
16. А какие еще есть методы кроме GET и POST и для чего они используются?
GET и POST - это основные методы передачи данных. Есть еще PUT и DELETE, но ими никто не
пользует
Денормализация бд нужна чтобы улучшить время выборки. Денормализацию делают только в нормализованной бд.