|
Общее позиционирование
|
Строго типизированный объектно-ориентированный язык общего назначения, работающий на JVM. Используется для корпоративных систем, микросервисов, Android.
|
Интерпретируемый язык сценариев, изначально для веба. Сейчас — мощная серверная платформа с ООП, фреймворками, DI и ORM.
|
|
Парадигма
|
Объектно-ориентированная + функциональная.
|
Императивная, процедурная и ООП; с PHP 7+ — строгая типизация, ООП, анонимные функции.
|
|
Пример “Hello World”
|
public class App { public static void main(String[] args){ System.out.println("Hello, World"); } }
|
<?php echo "Hello, World"; ?>
|
|
Среда выполнения
|
JVM (JIT / AOT)
|
PHP-FPM, Apache mod_php, CLI, Swoole (асинхронный сервер).
|
|
Компиляция / исполнение
|
Компиляция в байткод, JIT/AOT.
|
Интерпретация (опкоды через Zend Engine, OPcache JIT с PHP 8).
|
|
Типизация
|
Статическая, строгая.
|
С PHP 7 — строгая (через declare(strict_types=1)), но по умолчанию динамическая.
|
|
Синтаксис переменных
|
int x = 10; String s = "abc";
|
$x = 10; $s = "abc";
|
|
Типы данных
|
Примитивы (int, double, boolean, char) и ссылочные (String, Object).
|
int, float, bool, string, array, object, null, callable, iterable, mixed, resource.
|
|
ООП-модель
|
Классы, интерфейсы, наследование, абстрактные классы.
|
Полное ООП с PHP 5+. Поддержка interface, abstract class, trait, final, namespace.
|
|
Пример класса
|
class User { private String name; }
|
class User { private string $name; }
|
|
Инкапсуляция
|
public, private, protected.
|
Те же модификаторы (public, private, protected).
|
|
Наследование
|
extends + implements.
|
extends + implements; множественное наследование через trait.
|
|
Полиморфизм
|
Через интерфейсы и наследование.
|
Аналогично — через интерфейсы и трейты.
|
|
Интерфейсы
|
Контракты API (interface) — строго обязательные.
|
Аналогично (interface), можно реализовать несколько интерфейсов.
|
|
Абстрактные классы
|
Да (abstract class).
|
Да (abstract class).
|
|
Трейты / mixins
|
Нет (только через композицию).
|
Есть (trait) — добавляют методы в класс без наследования.
|
|
Пример трейта
|
—
|
trait Loggable { public function log($msg){ echo $msg; } }
|
|
Функции и методы
|
Методы внутри классов, перегрузка по типам.
|
Глобальные и методы классов; перегрузки нет, но есть аргументы по умолчанию и вариадичность.
|
|
Анонимные функции
|
Лямбды: x -> x + 1.
|
Замыкания: $f = fn($x) => $x + 1;
|
|
Обработка ошибок
|
Исключения (try/catch/finally), checked и unchecked.
|
Исключения (try/catch/finally), все runtime (unchecked).
|
|
Дженерики
|
Стирание типов, с Java 5+.
|
Отсутствуют, но эмулируются через PHPStan / Psalm / DocBlock аннотации (@template T).
|
|
Коллекции
|
List, Map, Set, Stream API.
|
array, SplObjectStorage, коллекции Doctrine, Laravel Collections (collect()).
|
|
Асинхронность
|
Потоки (Thread), ExecutorService, CompletableFuture.
|
По умолчанию синхронный. Асинхронность через Swoole, ReactPHP, Amp, RoadRunner.
|
|
Пример асинхронности
|
CompletableFuture.supplyAsync(() -> task());
|
Co\run(function(){ echo Co::sleep(1); }); // Swoole coroutine
|
|
Работа с файлами
|
Files.readAllBytes().
|
file_get_contents(), fopen(), fwrite().
|
|
Работа с сетью
|
HttpClient, Spring WebClient.
|
curl, GuzzleHttp, встроенный веб-сервер (php -S).
|
|
Модули и импорты
|
import java.util.*;
|
use App\Services\Mailer; (namespace).
|
|
Пакеты и зависимости
|
Maven, Gradle.
|
Composer (composer.json), Packagist.
|
|
Сборка и запуск
|
javac, java, mvn package.
|
php index.php, composer run-script.
|
|
Тестирование
|
JUnit, TestNG, Mockito.
|
PHPUnit, PestPHP, Codeception, Mockery.
|
|
Документация
|
Javadoc (/** ... */).
|
PHPDoc (/** ... */), APIGen, Sami.
|
|
Логирование
|
SLF4J, Log4j, Logback.
|
Monolog (де-факто стандарт).
|
|
Фреймворки (backend)
|
Spring Boot, Quarkus, Micronaut.
|
Laravel, Symfony, Yii2, Laminas (Zend), Slim, Bitrix Framework.
|
|
Фреймворки (CMS)
|
—
|
Bitrix, WordPress, Drupal, Joomla.
|
|
Bitrix Framework (аналог Spring)
|
—
|
Компонентный MVC-фреймворк с DI, ORM, модулями, шаблонами. Механизмы событий, кеширования, ORM на D7.
|
|
Laravel (аналог Spring Boot)
|
Контроллеры, сервисы, аннотации.
|
Контейнер зависимостей, Eloquent ORM, Blade шаблонизатор, маршрутизация, middleware.
|
|
Symfony (аналог Jakarta EE)
|
Большие корпоративные приложения.
|
DI Container, Config, Doctrine ORM, Twig, CLI (bin/console), модульная архитектура.
|
|
ORM и базы данных
|
Hibernate, JPA, MyBatis.
|
Doctrine ORM, Eloquent (Laravel), Bitrix ORM, RedBeanPHP.
|
|
REST API
|
Spring REST / WebFlux.
|
Laravel API Resource, Symfony API Platform, Slim REST.
|
|
JWT / Auth / Security
|
Spring Security.
|
Laravel Sanctum / Passport, Symfony Security, Bitrix Auth API.
|
|
Документирование API
|
Springdoc, Swagger/OpenAPI.
|
Swagger-PHP, API Platform Docs, Laravel OpenAPI.
|
|
DevTools / IDE
|
IntelliJ IDEA, Eclipse.
|
PhpStorm, VS Code, NetBeans.
|
|
CI/CD
|
Jenkins, GitLab CI, Maven.
|
GitHub Actions, GitLab CI, Deployer, Envoy.
|
|
Сборка / деплой
|
Docker, Kubernetes, WAR/JAR.
|
Docker, CI/CD, composer deploy, Capistrano, Bitrix24 Marketplace.
|
|
Unit-тестирование
|
Аннотации @Test, mock объекты.
|
PHPUnit (assertEquals()), PestPHP (минималистичный DSL).
|
|
Ассерты и тестовые фреймворки
|
JUnit Assertions.
|
assertSame(), Mockery, Codeception (E2E).
|
|
Документация и API
|
Javadoc / Swagger.
|
PHPDoc / OpenAPI / Postman Collections.
|
|
Архитектура
|
MVC, DI, сервисные слои, микросервисы.
|
MVC, MVVM, HMVC; Service Container; Middleware; Observer; Events.
|
|
Dependency Injection
|
Spring Container.
|
Laravel Container, Symfony DI, Bitrix Service Locator.
|
|
Шаблонизация
|
Thymeleaf, JSP, Freemarker.
|
Blade (Laravel), Twig (Symfony), Bitrix Components.
|
|
Сборка фронтенда
|
Maven Frontend Plugin.
|
Laravel Mix, Vite, Webpack Encore.
|
|
Кеширование
|
Ehcache, Redis.
|
Redis, Memcached, Laravel Cache, Bitrix Cache.
|
|
Очереди и задачи
|
Spring Boot Queue, RabbitMQ.
|
Laravel Queue, Symfony Messenger, Bitrix Agents.
|
|
CLI / Console
|
Spring Shell, Picocli.
|
Artisan (Laravel), Console (Symfony), Bitrix CLI Tools.
|
|
Тестирование интеграций
|
Testcontainers, Spring Boot Test.
|
Laravel Feature Tests, Symfony Panther, Codeception.
|
|
Формат JSON / XML
|
Jackson, Gson.
|
json_encode(), json_decode(), Symfony Serializer.
|
|
Производительность
|
Высокая, JIT, многопоточность.
|
Средняя, улучшена с PHP 8 JIT, асинхронность через Swoole.
|
|
Память
|
GC управляемая JVM.
|
Reference counting, Zend memory manager, Garbage cycles collector.
|
|
Фреймворки для API
|
Spring Boot, Micronaut.
|
Laravel, Symfony API Platform, Slim, Lumen.
|
|
Преимущества
|
Строгая типизация, масштабируемость, зрелость экосистемы.
|
Простота, скорость разработки, огромная веб-экосистема, готовые CMS.
|
|
Недостатки
|
Многословность, JVM-зависимость, высокий порог входа.
|
Менее строгая типизация, слабая многопоточность, зависимость от среды.
|
|
Философия языка
|
«Безопасность и переносимость через виртуальную машину».
|
«Простота, скорость, гибкость и веб-ориентированность».
|
|
Типичные области применения
|
Корпоративные backend-системы, Android, микросервисы.
|
Веб-сайты, CMS, eCommerce, CRM, REST API, SaaS.
|
|
Крупные проекты
|
LinkedIn, Netflix, Amazon backend.
|
Facebook (раньше PHP → HHVM), WordPress, Bitrix24, Wikipedia, Mail.ru, Avito.
|