Евгений Колесников 3 years ago
parent
commit
45c5e2678c
1 changed files with 39 additions and 5 deletions
  1. 39 5
      articles/api_php.md

+ 39 - 5
articles/api_php.md

@@ -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);
     ```
-