|
|
@@ -216,7 +216,19 @@ function someFunction($firstParam, $secondParam)
|
|
|
$concat = someFunction('раз', 'два');
|
|
|
```
|
|
|
|
|
|
-Обратите внимание, для склеивания строк используется символ точки, знак "+" используется только с числовыми переменными.
|
|
|
+Обратите внимание, для склеивания строк используется символ `.` (точка), знак `+` (плюс) используется только с числовыми переменными. Это проистекает из динамической типизации, PHP не знал бы что делать в следующем случае:
|
|
|
+
|
|
|
+```php
|
|
|
+$a = 1;
|
|
|
+$b = 2;
|
|
|
+$c = $a + $b; // 3 или 12 ?
|
|
|
+```
|
|
|
+
|
|
|
+Конкатенация (операция `.`) интерпретирует данные как строки
|
|
|
+
|
|
|
+```php
|
|
|
+$c = $a . $b; // 12
|
|
|
+```
|
|
|
|
|
|
**Классы**
|
|
|
|
|
|
@@ -237,6 +249,13 @@ class ApiServer extends ParentClass
|
|
|
|
|
|
// свойство класса
|
|
|
$this->var = 1;
|
|
|
+
|
|
|
+ // метод класса
|
|
|
+ $this->someName();
|
|
|
+ }
|
|
|
+
|
|
|
+ private function someName($someVar = null) {
|
|
|
+ ...
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
@@ -274,6 +293,8 @@ Authorization: Basic ZXNtaXJub3Y6MTExMTAz
|
|
|
Описываем класс сервера и создаём его (при этом вызовется конструктор)
|
|
|
|
|
|
```php
|
|
|
+<?php
|
|
|
+
|
|
|
// декларация класса
|
|
|
class ApiServer
|
|
|
{
|
|
|
@@ -284,9 +305,11 @@ class ApiServer
|
|
|
|
|
|
// создание экземпляра
|
|
|
new ApiServer();
|
|
|
+
|
|
|
+?>
|
|
|
```
|
|
|
|
|
|
-Функция *print_r* выводит в консоль содержимое переменной
|
|
|
+Функция *print_r* выводит в stdout (стандартный поток вывода) содержимое переменной
|
|
|
|
|
|
Переменная *$_SERVER* внутренняя глобальная переменная языка **PHP**, она содержит параметры запроса и возвращает примерно такое:
|
|
|
|
|
|
@@ -325,7 +348,7 @@ Array
|
|
|
* PHP_AUTH_USER - логин пользователя (если использовалась базовая авторизация)
|
|
|
* PHP_AUTH_PW - пароль пользователя (если использовалась базовая авторизация)
|
|
|
|
|
|
-Разберем на примере простой скрипт:
|
|
|
+Разберём на примере простой скрипт:
|
|
|
|
|
|
```php
|
|
|
class ApiServer
|
|
|
@@ -412,7 +435,7 @@ class ApiServer
|
|
|
* `echo` - встроенная команда PHP, выводит данные в *stdout* (всё, что попадёт в выходной поток, станет телом ответа)
|
|
|
* `json_encode($response, JSON_UNESCAPED_UNICODE)` - встроенный метод PHP, преобразует данные в JSON-строку
|
|
|
* `isset` - встроенный метод PHP, проверяет существует ли указанная переменная
|
|
|
-* запрос данных из бд
|
|
|
+* запрос данных из бд (список всех строк)
|
|
|
|
|
|
```php
|
|
|
$response = $this->db
|
|
|
@@ -420,6 +443,18 @@ class ApiServer
|
|
|
->fetchAll(PDO::FETCH_ASSOC);
|
|
|
```
|
|
|
|
|
|
+ Запрос с параметром (литерал `:login` заменяется перед запросом значением из массива, переданного в *execute*).
|
|
|
+
|
|
|
+ Метод *fetch* возвращает одну запись (строку)
|
|
|
+
|
|
|
+ ```php
|
|
|
+ $user = $this->db
|
|
|
+ ->query("SELECT * FROM User WHERE login=:login")
|
|
|
+ ->execute([':login'=>$_SERVER['PHP_AUTH_USER']])
|
|
|
+ ->fetch();
|
|
|
+ ```
|
|
|
+
|
|
|
+
|
|
|
* подключение к БД mysql
|
|
|
|
|
|
```php
|
|
|
@@ -479,4 +514,3 @@ POST-запросы отличаются тем, что содержат дан
|
|
|
```php
|
|
|
$json = json_decode($rawData, true);
|
|
|
```
|
|
|
-
|