Создание собственного скрипта на языке PHP

Раздел: Разработка -> Основы

PHP скрипты являются основой серверной логики веб-сайтов и приложений. Понимание процесса их создания позволяет автоматизировать задачи, обрабатывать данные и взаимодействовать с пользователями. В этой статье рассмотрены несколько подходов: от простого вывода информации до структурированного кода с классами и автозагрузкой.

Основные методы создания PHP скрипта

Базовый веб-скрипт с обработкой GET параметра

Самый распространённый случай – скрипт, который принимает данные от пользователя и возвращает ответ. Ниже приведён полный пример файла greet.php.


<?php
$name = isset($_GET['name']) ? htmlspecialchars($_GET['name']) : 'Гость';
echo "Привет, $name!";

создать скрипт php (создание php скрипта)

Для запуска поместите файл в корень веб-сервера (например, встроенный PHP сервер: php -S localhost:8000) и откройте в браузере http://localhost:8000/greet.php?name=Мир.

Типичные ошибки: пустой ответ – проверьте, что короткие теги не отключены (директива short_open_tag в php.ini); синтаксические ошибки – включите отображение ошибок (error_reporting(E_ALL); ini_set('display_errors', 1);).

Как создать скрипт для командной строки (CLI)?

CLI скрипты удобны для фоновых задач, кранов или пакетной обработки. Добавьте шебанг и используйте $argv.


#!/usr/bin/php
<?php
if ($argc > 1) {
    echo "Привет, {$argv[1]}!\n";
} else {
    echo "Привет, мир!\n";
}

Сохраните как hello.php, сделайте исполняемым (chmod +x hello.php) и запустите: ./hello.php Вася.

Проблема: если шебанг не работает, выполните php hello.php напрямую. Ошибка «не найдено» – проверьте путь к PHP (which php).

Как подключиться к базе данных MySQL из PHP?

Для работы с БД чаще всего используют PDO (Php Data Objects) – универсальный интерфейс.


<?php
$dsn = 'mysql:host=localhost;dbname=test;charset=utf8';
$user = 'root';
$pass = '';

try {
    $pdo = new PDO($dsn, $user, $pass);
    $stmt = $pdo->query('SELECT * FROM users');
    foreach ($stmt as $row) {
        echo $row['name'] . '<br>';
    }
} catch (PDOException $e) {
    echo 'Ошибка: ' . $e->getMessage();
}

Убедитесь, что расширение php_pdo_mysql включено в php.ini.

Ошибки: “could not find driver” – установите необходимое расширение; “Connection refused” – проверьте хост и порт MySQL.

Как использовать Composer и автозагрузку классов?

Composer позволяет управлять зависимостями и автоматически загружать классы. Создайте composer.json:


{
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }
}

Выполните composer dump-autoload. Теперь класс App\User в файле src/User.php будет загружен автоматически:


<?php
require 'vendor/autoload.php';
$user = new App\User();

Проблема: класс не найден – проверьте путь и пространство имён; не забудьте запустить composer install хотя бы один раз.

Как создать endpoint для обработки AJAX запросов?

Современные приложения часто отправляют запросы на сервер асинхронно. Скрипт должен возвращать JSON.


<?php
header('Content-Type: application/json; charset=utf-8');
$data = ['status' => 'ok', 'message' => 'Данные получены'];
echo json_encode($data);

Клиент может обратиться к этому скрипту через fetch или XMLHttpRequest.

Проблема: CORS – если запрос с другого домена, добавьте заголовок header('Access-Control-Allow-Origin: *');.

Как организовать код в классах (ООП)?

Структурирование кода улучшает его читаемость и поддерживаемость. Пример класса Car:


<?php
class Car {
    private $model;
    public function __construct($model) {
        $this->model = $model;
    }
    public function getModel() {
        return $this->model;
    }
}
$myCar = new Car('Tesla');
echo $myCar->getModel();

Распространённая ошибка: попытка вызвать нестатический метод статически – используйте new для создания экземпляра.

Расширенные примеры для самостоятельного изучения

Чтение и запись файлов

Работа с файловой системой – частая задача. Пример записи в лог и чтения.

Пример

<?php
$file = 'log.txt';
$content = "Дата: " . date('Y-m-d H:i:s') . "\n";
file_put_contents($file, $content, FILE_APPEND);
$read = file_get_contents($file);
echo nl2br($read);

Результат: в файл добавится строка с датой, затем весь содержимое выведется на экран.

Ошибки: отсутствие прав на запись – проверьте права на папку; file_get_contents вернёт false при ошибке.

Использование сессий для хранения данных пользователя

Сессии позволяют сохранять состояние между запросами. Типичное использование – авторизация.

Пример

<?php
session_start();
if (!isset($_SESSION['visits'])) {
    $_SESSION['visits'] = 0;
}
$_SESSION['visits']++;
echo 'Вы посетили страницу ' . $_SESSION['visits'] . ' раз(а).';

Результат: при каждом обновлении счётчик увеличивается.

Проблема: сессия не сохраняется – проверьте, что session_start() вызывается до любого вывода.

Отправка HTTP запросов через cURL

cURL используется для интеграции с внешними API. Пример получения данных с публичного API.

Пример

<?php
$ch = curl_init('https://api.icndb.com/jokes/random');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Ошибка cURL: ' . curl_error($ch);
} else {
    $data = json_decode($response, true);
    echo 'Шутка: ' . $data['value']['joke'];
}
curl_close($ch);

Результат: выводится случайная шутка.

Ошибки: SSL сертификаты – если возникает проблема с HTTPS, попробуйте добавить curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); (не рекомендуется для продакшена).

Обработка исключений с кастомными классами

Создание собственных исключений улучшает читаемость кода.

Пример

<?php
class ValidationException extends Exception {}

try {
    $age = -5;
    if ($age < 0) {
        throw new ValidationException('Возраст не может быть отрицательным');
    }
} catch (ValidationException $e) {
    echo 'Ошибка валидации: ' . $e->getMessage();
} catch (Exception $e) {
    echo 'Общая ошибка: ' . $e->getMessage();
}

Результат: выводится “Ошибка валидации: Возраст не может быть отрицательным”.

Типичная ошибка: забыть указать блок catch – необработанное исключение приведёт к фатальной ошибке.

Простой роутер для обработки URL

Роутер позволяет направлять запросы к разным обработчикам в зависимости от пути.

Пример

<?php
$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
switch ($uri) {
    case '/':
        echo 'Главная страница';
        break;
    case '/about':
        echo 'О нас';
        break;
    default:
        http_response_code(404);
        echo 'Страница не найдена';
}

Результат: при переходе на /about выводится “О нас”.

Проблема: веб-сервер может не направлять все запросы на скрипт – настройте .htaccess или nginx для перенаправления на index.php.

Создание PHP скрипта - comments

En
создать скрипт php (php)