Загальні

Що таке посилання?

Посилання в PHP - це засіб доступу до вмісту однієї змінної під різними іменами. Вони не схожі на покажчики C оскільки в PHP - це псевдоніми в таблиці імен змінних, а ім'я змінної та її вміст - це різні речі, тому один вміст може мати різні імена.

Які основні операції з використанням посилань?

З посиланнями можна виконати три базові операції: присвоєння за посиланням, передача за посиланням та повернення за посиланням.

Присвоєння за посиланням

Це коли одна змінна посилається на значення іншої змінної, наприклад:

<?php
    $a =& $b;
?>

Тут змінні $a і $b вказують на те саме значення.

Передача за посиланням

Для цього створюються дві змінні, які посилаються на один і той самий зміст: одну передають у функції, а іншу — в області видимості виклику, наприклад:

<?php

function foo(&$var)
{
    $var++;
}

$a = 5;
foo($a);

?>

В результаті функція змінить значення, на яке вказує змінна $a, на 6. Причина полягає в тому, що функції foo змінна $var посилається на той самий зміст, що й змінна $a

Повернення посилань

Повернення за посиланням використовується, коли потрібно визначити змінну, до якої потрібно прив'язати посилання. Приклад з об'єктом, де змінна $myValue, є посиланням на властивість об'єкта $value:

<?php

class Foo
{
    public $value = 42;

    public function &getValue()
    {
        return $this->value;
    }
}

$obj = new Foo();
$myValue = &$obj->getValue(); 
$obj->value = 2;
echo $myValue;  // 2

?>

Інший приклад:

<?php

function &collector()
{
  static $collection = array();
  return $collection;
}

$collection = &collector();
$collection[] = 'foo';

?>

Назвіть прості типи даних, підтримувані в РНР?

  • Скалярні типи:
    • bool - логічний тип приймає лише два значення, які виражають істинність: true чи false.
    • int - цілі числа.
    • float - числа з плаваючою комою.
    • string - це рядок, що містить набір символів, у якому символ - те саме, що й байт.
  • array - масив, упорядкована структура даних, яка пов'язує значення та ключі.
  • object - об'єкти, сутність що володіє станом і поведінкою, та має поля і методи.
  • resource - це тип, який зберігає посилання на зовнішній ресурс.
  • never - це тип, що означає, що функція припинить роботу без повернення значення.
  • void - це тип, який вказує, що функція не повертає значення.
  • null

Що таке інкремент і декремент, у чому різниця між префіксним і постфіксним інкрементом і декрементом?

Що таке рекурсія?

У чому різниця між =, == і ===?

Які знаєте принципи ООП?

Яка система типів використовується в PHP? Опишіть плюси та мінуси.

Чим відрізняються ключові слова: include і require, mysql_connect і mysql_pconnect?

Що таке інтерфейси? Чи використовуєте їх? Якщо так — розкажіть про це.

Що таке абстрактний клас і чим він відрізняється від інтерфейсу?

Чи може абстрактний клас містити приватний метод?

Які модифікатори видимості є в РНР?

Які магічні методи ви знаєте і як їх застосовують?

Що таке генератори і як їх використовувати?

Що робить оператор yield?

Що таке traits? Альтернативне рішення? Наведіть приклад.

Опишіть поведінку під час використання traits з однаковими іменами полів і/або методів?

Чи будуть доступні приватні методи trait в класі?

Чи можна компонувати traits в trait?

Розкажіть про обробку помилок і винятки (try catch, finaly і throw).

Що таке type hinting, як працює, навіщо потрібен?

Що таке namespace’и та навіщо вони?

Порівняння значень змінних у РНР і підводні камені? Приведення типів. Що змінилося в PHP 8 у цьому контексті?

Як працює session у РНР, де зберігається, як ініціалізується?

Суперглобальні масиви. Які знаєте? Як використовували?

Порівняйте include vs required, include_once vs required_once.

Що означає складність алгоритму?

Що таке замикання в PHP? Наведіть приклад.

Яка різниця між замиканням у PHP і JavaScript?

Що таке пізнє зв’язування? Розкажіть про поведінку та застосування static.

Як перевизначити зберігання сесій?

Розкажіть про SPL-бібліотеку (Reflection, autoload, структури даних).

Розкажіть про принципи SOLID.

Розкажіть про шаблони GRASP.

Розкажіть про Dependency Injection: що таке DI-контейнери? Які є варіанти реалізацій?

Що вам відомо про MVC?

Що вам відомо про шаблони GoF?

Що вам відомо про шаблони, які застосовуються в ORM?

Напишіть/розкажіть на PHP приклад реалізації патерну Singleton.

Що таке Docker? Яким є принцип його роботи?

Що таке LAMP/NAMP?

Розкажіть про regexp.

Розкажіть про SSH-протокол.

Що таке PDO?

Що нового з’явилося в PHP 8?

Що таке PHP PEAR?

Які версії PHP досі підтримуються?

У чому різниця між GET і POST?

Чим відрізняються оператори BREAK і CONTINUE?

Чи є різниця між одинарними та подвійними лапками?

Що таке Cookie і навіщо вони використовуються?

Що не можна зберігати в Cookie і чому?

Якому середовищу розробки віддаєте перевагу й чому?