PHP Flashcards

1
Q

Что такое переменная, функция?

A

Переменная - ячейка памяти, в которой содержится информация

Функция - именнованный кусок кода

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Какие различия между isset() и empty(). В каких случаях isset() и !empty() дадут
разный результат?

A

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Основные операторы - if, else, foreach, while, for, switch.

A

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

PDO, расшифровка, зачем используется? Плюсы и минусы

A

PHP DATA OBJECT
+ удобно переходить между базами данных
+ отменяет необходимость знать синтаксис разных БД
- программисты могут не знать синтаксис запросов

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Какие типы данных в PHP вы знаете? Какие псевдо-типы?

A
Типы
1 integer
2 string
3 float
4 array
5 object
6 bool
7 null
8 resource - это специальная переменная, содержащая ссылку на внешний ресурс.
9 iterable - псевдотип, введенный в PHP 7.1. Он принимает любой массив (array) или объект, реализующий интерфейс Traversable. Оба этих типа итерируются с помощью foreach 
Псевдотипы:
mixed
number
array|object 
Callback-функции могут быть отмечены в коде подсказкой типа callable, появившейся в версии PHP 5.4. В данной документации для этих же целей используется callback.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Что такое строгая типизация, её плюсы?

A

Режим строгой типизации применяется к конкретному файлу. Для включения режима используют директиву declare в начале файла.
+ программист точно понимает, что он делает и как это работает, что позволяетизбедать багов, связанных с неправильным присваиванием и сравнением.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Как работает передача параметров по ссылке? Каким образом объекты
передаются по ссылке?

A

Ссылка - указатель на значением, хранящееся в другой переменной.
3 вида ссылок:
Жесткие ссылки - используют &. Не может ссылаться на несуществующий объект, если такая попытка делается, то объект создается. При этом изменение одной переменной ведет за собой измение другой.
Unset ссылки лишь разрывает связь, но не удаляет переменную.
Символические ссылки почти не используются.
$a = 1;
$b = ‘a’;
echo $$b; // выведет значение переменной а, b - строковая переменная, хранящая имя другой переменной
Ссылка на объект
$a = newObject();
$a->num = 23;
$b = $a;
$b->num = 25;
echo “{$a->num}, {$b->num}”;
// в обоих случая выведется 25, т.к. переменная хранит не сам объект, а ссылку на него (например, пальто в гардеробе и два одинаковых номерка).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Локальные, глобальные и статические переменные.

A

Локальные - внутри функции, разрушаются после выполнения функции.
Статические - внутри функции, но не разрушаются при выводе из нее.
Глобальные - доступные во всех функциях. Объявляются либо до функций, либо с использованием слова global.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Суперглобальные переменные.

A
Суперглобальные переменные - это встроенные переменные, которые всегда доступны во всех областях видимости
$GLOBALS
$_SERVER
$_GET
$_POST
$_FILES
$_COOKIE
$_SESSION
$_REQUEST
$_ENV
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Константы в PHP. В чем различия между define() и const?

A

Константа - это идентификатор (имя) для простого значения. Как следует из названия, их значение не может изменится в ходе выполнения скрипта.
Имена констант по умолчанию чувствительны к регистру. По принятому соглашению, имена констант всегда пишутся в верхнем регистре.
Делятся на предопределенные в языке и определяемые в программе.
Объявляются через
const - дб объявлены в самой верхней области видимости, регистрозависимы, хранят массивы с 5.6.
define() - в любом месте программы, м сделать регистронезависимыми, массивы с версии 7.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Буферизация вывода в PHP.

A

Метод организации обмена, который подразумевает использование буфера для верменного хранения данных.
Приложение получает возможность выполнить свою логику, созраняя выходные данные.
2 способа:
php.ini и значение on в output-buffering - включает буферизацию для всех файлов
функция ob_start в скрипте, вывод которого надо буферизировать

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Как работают cookies в PHP?

A

cookies - небольшой кусочек данных, кооторый передается браузеру в заголовках ответа сервера.
Работает через суперглобальный массив $_COOKIE.
Устанавливаются функцией setcookie(). Она принимает несколько параметров (7), но обязательным является только 1 - name.
$_COOKIE хранит информацию о куки, доступ осуществляется по ключу (параметр name).
Фукнция должна вызываться до любого вывода данных в браузер. Но это необязательно, если использовать буферизацию.
Чтобы удалить куки, нужно ее перезаписать со всеми параметрами, которые были использованы при ее установке, но с датой в прошлом.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Потоки в php, какие есть, зачем нужны?

A

Потоки (Stream) - ресурс, который ведет себя как источник непрерывной последовательности данных.
Из потока можно читать данные и записывать в него. Также возможно перемещаться в разные позиции внутри потока (fseek()).
Виды:
файл на жестком диске,
http-соединение с веб-сайтом
udp-соединение
zip-файлы
ssh-тоннель
Примеры:
file:// - доступ к локальной файловой системе
http:// - доступ к урл адресам по http
ftp:// - по ftp
php:// - доступ к различным потокам ввода-вывода
zlib:// - сжатые потоки
phar:// - php-архив

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Что такое shutdown-функции?

A

Функция, которая выполняется после завершения работы скрипта. Регистрируется функцией register_shutdown_function(). Фукнции буту выполняться по порядку регистрации.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Что такое анонимные функции? Что такое замыкания?

A

Анонимные функции, также известные как замыкания (closures), позволяют создавать функции, не имеющие определенных имен. Они наиболее полезны в качестве значений callback-параметров, но также могут иметь и множество других применений.

$greet = function($name)
{
printf(“Привет, %s\r\n”, $name);
};

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Что такое исключения, как ими пользоваться?

A

Исключение - объект класса Exception или наследников.
В php7 это мб любой класс, реализующий интерфейс Throwble.
Исключение можно сгенерировать через trow new Exception.

try catch
у каждого try дб хотя бы 1 catch или finally
В php7 и выше catch может принимать несколько типов исключений (через |).
finally будет выполняться после всех try и catch, независимо от того, было ли брошено исключение.

17
Q

Runtime assertions, что это и зачем нужно?

A

Утверждения времени выполнения - утверждение, которое всегда будет истинным в той точке кода, в которой оно появляется.Если оно ложно, то где-то в предыдущем коде есть ошибка, а следующий код либо не будет работать, либо будет работать неправильно.
Используется для отладки. Чаще всего в модулях, которые предоставляют api другим модулям.
В операторе assert содержится что-то, что невозможно, когда код и конфигурация находятся в безошибочном состоянии.

18
Q

Что такое юнит-тесты и зачем они нужны? Как ими пользоваться? Кaк написать
свой?

A

Юнит-тесты - тестирование работы функций.

При запуске тест передает функции набор тестовых данных и сравнивает результат с эталонным.