ШПАРГАЛКА

PHP

Шпаргалка по PHP: синтаксис, переменные и типы, строки, массивы, условия, циклы, функции, ООП, PDO, формы и Composer с примерами.

PHP — серверный язык для веб-разработки. На нём работают WordPress, Laravel, Symfony и миллионы сайтов. Код встраивается в HTML, исполняется на сервере и отдаёт браузеру готовую разметку. Эта шпаргалка собирает основные конструкции языка с короткими рабочими примерами.

Синтаксис и теги

PHP-код размещается между тегами <?php и ?>. Всё, что вне тегов, выводится как обычный текст. Инструкции разделяются точкой с запятой. Вывод — через echo или print.

<?php
echo "Привет, мир!"; // Привет, мир!

// Однострочный комментарий
# Тоже однострочный
/* Многострочный
   комментарий */
?>
<p>Обычный HTML вне тегов PHP</p>

Если файл содержит только PHP-код, закрывающий тег ?> в конце лучше не ставить — это устраняет случайные пробелы в выводе.

Переменные и типы

Имя переменной начинается с $. Объявлять тип заранее не нужно — PHP определяет его сам по значению. Основные типы: int, float, string, bool, array, null, object.

<?php
$name = "Аня";        // строка
$age = 25;            // целое
$price = 19.99;       // дробное
$active = true;       // логическое
$empty = null;        // null

var_dump($age);       // int(25)
echo gettype($price); // double

Проверить и привести тип помогают функции is_int(), is_string(), (int), (string).

<?php
$x = "42";
$n = (int) $x;        // 42 (число)
var_dump(is_int($n)); // bool(true)

Строки

Строки заключают в одинарные или двойные кавычки. В двойных кавычках переменные подставляются в текст, в одинарных — нет. Конкатенация (склейка строк) выполняется точкой ..

<?php
$name = "Аня";
echo "Привет, $name!";   // Привет, Аня!
echo 'Привет, $name!';   // Привет, $name!
echo "Привет, " . $name; // Привет, Аня

Полезные функции для работы со строками:

<?php
echo strlen("hello");         // 5
echo strtoupper("php");       // PHP
echo str_replace("a", "o", "cat"); // cot
echo trim("  пробелы  ");     // пробелы
echo substr("PHP-код", 0, 3); // PHP

Массивы

Массив хранит набор значений. Индексные массивы используют числовые ключи от 0, ассоциативные — строковые ключи.

<?php
// Индексный массив
$fruits = ["яблоко", "банан", "вишня"];
echo $fruits[1];   // банан
$fruits[] = "груша"; // добавить в конец

// Ассоциативный массив
$user = ["name" => "Аня", "age" => 25];
echo $user["name"]; // Аня
echo count($fruits); // 4

Частые операции с массивами:

<?php
$nums = [3, 1, 2];
sort($nums);              // [1, 2, 3]
$sum = array_sum($nums);  // 6
in_array(2, $nums);       // true
$keys = array_keys(["a" => 1, "b" => 2]); // ["a", "b"]

Операторы

Арифметические: + - * / % **. Сравнения: == === != !== < > <= >=. Важно различать == (равны по значению) и === (равны по значению и типу).

<?php
var_dump(5 == "5");   // bool(true)  — значения равны
var_dump(5 === "5");  // bool(false) — разные типы
echo 2 ** 3;          // 8
echo 7 % 3;           // 1

Логические &&, ||, !, тернарный оператор и оператор объединения с null:

<?php
$age = 20;
$status = $age >= 18 ? "взрослый" : "ребёнок";
echo $status;                 // взрослый

$name = $input ?? "Гость";    // если $input не задан → "Гость"

Условия: if, switch, match

Ветвление через if / elseif / else. Для выбора по значению удобны switch и современный match (с PHP 8, сравнивает строго через ===).

<?php
$score = 75;
if ($score >= 90) {
    echo "Отлично";
} elseif ($score >= 60) {
    echo "Норма"; // выведется это
} else {
    echo "Плохо";
}
<?php
$day = 3;
$name = match($day) {
    1, 2, 3, 4, 5 => "Будни",
    6, 7 => "Выходные",
    default => "?",
};
echo $name; // Будни

Циклы: for, foreach, while

for — когда известно число итераций. foreach — для перебора массивов. while — пока условие истинно.

<?php
for ($i = 1; $i <= 3; $i++) {
    echo $i; // 123
}
<?php
$user = ["name" => "Аня", "age" => 25];
foreach ($user as $key => $value) {
    echo "$key: $value\n";
}
// name: Аня
// age: 25
<?php
$n = 3;
while ($n > 0) {
    echo $n;
    $n--;
} // 321

Управление циклом: break — выйти, continue — пропустить итерацию.

Функции

Функция объявляется ключевым словом function. Можно указывать типы аргументов и возвращаемого значения, а также значения по умолчанию.

<?php
function greet(string $name): string {
    return "Привет, $name!";
}
echo greet("Аня"); // Привет, Аня!

function sum(int $a, int $b = 10): int {
    return $a + $b;
}
echo sum(5);    // 15
echo sum(5, 3); // 8

Стрелочные функции (fn) — короткая запись, автоматически видят переменные из внешней области:

<?php
$nums = [1, 2, 3];
$doubled = array_map(fn($x) => $x * 2, $nums);
print_r($doubled); // [2, 4, 6]

$factor = 3;
$triple = fn($x) => $x * $factor; // factor виден автоматически
echo $triple(4); // 12

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

Это встроенные массивы, доступные везде. $_GET и $_POST хранят данные запроса, $_SESSION — данные сессии, $_SERVER — информацию о сервере.

<?php
// Адрес: page.php?id=42
$id = $_GET["id"] ?? null; // "42"

$method = $_SERVER["REQUEST_METHOD"]; // GET или POST

session_start();
$_SESSION["user"] = "Аня"; // сохранить в сессию
echo $_SESSION["user"];    // Аня

Данные из $_GET и $_POST всегда нужно проверять и экранировать — это ввод от пользователя.

Работа с формами

HTML-форма с методом POST отправляет данные на сервер. В PHP их читают из $_POST. Перед выводом значения экранируют через htmlspecialchars(), чтобы защититься от XSS.

<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    $email = trim($_POST["email"] ?? "");
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
        echo "Email: " . htmlspecialchars($email);
    } else {
        echo "Неверный email";
    }
}
?>
<form method="post">
    <input type="email" name="email">
    <button>Отправить</button>
</form>

ООП: классы и объекты

Класс — это шаблон. Объект — экземпляр класса, создаётся через new. Свойства и методы доступа: public, protected, private. Конструктор — метод __construct.

<?php
class User {
    public function __construct(
        public string $name,
        private int $age
    ) {}

    public function greet(): string {
        return "Я {$this->name}";
    }
}

$u = new User("Аня", 25);
echo $u->name;    // Аня
echo $u->greet(); // Я Аня

Наследование

Класс-наследник расширяет родителя через extends и может переопределять методы.

<?php
class Animal {
    public function sound(): string { return "..."; }
}
class Dog extends Animal {
    public function sound(): string { return "Гав"; }
}
echo (new Dog())->sound(); // Гав

Интерфейсы и трейты

Интерфейс задаёт набор методов, которые класс обязан реализовать (implements). Трейт — переиспользуемый набор методов, подключаемый через use.

<?php
interface Speaker {
    public function say(): string;
}

trait Logger {
    public function log(string $m): void {
        echo "LOG: $m";
    }
}

class Bot implements Speaker {
    use Logger;
    public function say(): string { return "Бип"; }
}

$b = new Bot();
echo $b->say();  // Бип
$b->log("ok");   // LOG: ok

Обработка ошибок

Опасный код оборачивают в try, ошибки ловят в catch. Блок finally выполняется всегда. Свою ошибку создают через throw new Exception(...).

<?php
function divide($a, $b) {
    if ($b === 0) {
        throw new InvalidArgumentException("Деление на ноль");
    }
    return $a / $b;
}

try {
    echo divide(10, 0);
} catch (InvalidArgumentException $e) {
    echo "Ошибка: " . $e->getMessage();
} finally {
    echo " (готово)";
}
// Ошибка: Деление на ноль (готово)

Работа с БД через PDO

PDO — единый интерфейс к разным базам данных. Главное правило: всегда используйте подготовленные запросы с параметрами — это защищает от SQL-инъекций.

<?php
$pdo = new PDO(
    "mysql:host=localhost;dbname=shop;charset=utf8mb4",
    "user",
    "password"
);

// Безопасный запрос с параметром
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([42]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
echo $user["name"];

// Вставка
$stmt = $pdo->prepare("INSERT INTO users (name) VALUES (:name)");
$stmt->execute(["name" => "Аня"]);

Чтобы PDO выбрасывал исключения при ошибках, задайте режим: $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Composer кратко

Composer — менеджер зависимостей PHP. Он скачивает библиотеки и настраивает автозагрузку классов. Зависимости перечислены в файле composer.json.

<?php
// Установка пакета (в терминале):
// composer require guzzlehttp/guzzle

// Подключаем автозагрузчик один раз в начале:
require "vendor/autoload.php";

// Теперь классы из пакетов доступны:
use GuzzleHttp\Client;
$client = new Client();

Основные команды: composer install — поставить зависимости из composer.lock, composer update — обновить, composer require пакет — добавить новый. Папку vendor/ в git обычно не коммитят.

Поддержать проект