4.

Zend Framework → Laminas Project 完全解説(Mezzio/Doctrine 統合/現状)

編集
この記事の要点
  • Zend Framework は 2019 年 Linux Foundation に寄付され Laminas Project へ改名
  • Zend Technologies(Zeev Suraski/Andi Gutmans)が PHP 共同開発者として有名
  • 後継: Laminas Components(旧 ZF コンポーネント)+ Mezzio(旧 Zend Expressive、PSR-7/PSR-15 ベース)
  • Doctrine ORM や PSR 系標準と統合されたエンタープライズ向け構成
  • 現状は Symfony / Laravel が主流、Laminas は既存資産の保守+一部新規案件で利用

Zend Framework とは

Zend Framework (ZF) は、Zend Technologies が主導していた PHP のオープンソースフルスタックフレームワークで、2006 年に ZF1、2012 年に ZF2、2016 年に ZF3 がリリースされました。エンタープライズ品質を掲げ、コンポーネント単位での利用が可能な点が特徴です。

Laminas Project への改名(2019)

2019 年、Zend Technologies は ZF と関連 OSS プロジェクトをすべて Linux Foundation 傘下の独立プロジェクト「Laminas Project」に寄付しました。これにより名称が変わりました:

旧名称新名称(Laminas)説明
Zend FrameworkLaminas Projectプロジェクト全体
Zend Framework ComponentsLaminas Components個別コンポーネント群
Zend ExpressiveMezzioPSR-7/PSR-15 ミドルウェアフレームワーク
ApigilityLaminas API ToolsAPI 開発ツール

名前の由来とエコシステム

  • 「Zend」は PHP のコア共同開発者 Zeev Suraski + Andi Gutmans の名前合成
  • Zend Technologies は PHP 商用エコシステム(Zend Engine / Zend Server / Zend Studio)も提供
  • 2015 年に Rogue Wave Software に買収、2019 年さらに Perforce に買収
  • OSS 部分は中立な Linux Foundation の Laminas へ寄付して開発継続

Laminas Components

Laminas は70 以上のコンポーネントを提供し、単体・組み合わせで利用できます:

コンポーネント役割
laminas-mvcMVC フレームワーク本体(フルスタック)
laminas-servicemanagerDIコンテナ
laminas-eventmanagerイベント駆動アーキテクチャ
laminas-formフォーム生成 + バリデーション
laminas-validatorバリデーションロジック
laminas-filter入力フィルタ
laminas-dbDB アブストラクション (TableGateway 等)
laminas-cacheキャッシュ抽象
laminas-mailメール送受信
laminas-authentication認証

Mezzio: PSR-7/PSR-15 ミドルウェアFW

Mezzio は軽量・モダンなミドルウェアベースのフレームワーク。Slim / Symfony Messenger に近い思想です:

// composer create-project mezzio/mezzio-skeleton my-app
// → ルーター(FastRoute/Laminas Router/Aura.Router)と DI(Laminas SM/Pimple/Aura)を選択

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;

class HomeHandler implements RequestHandlerInterface
{
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        return new \Laminas\Diactoros\Response\JsonResponse([
            'message' => 'Hello Mezzio'
        ]);
    }
}

// config/routes.php
$app->get('/', App\Handler\HomeHandler::class, 'home');

laminas-mvc(フルスタック)の典型構造

my-zf-app/
├── config/
│   ├── application.config.php       # モジュール登録
│   ├── modules.config.php
│   └── autoload/
├── module/
│   └── Application/
│       ├── src/
│       │   ├── Controller/
│       │   │   └── IndexController.php
│       │   ├── Model/
│       │   └── Module.php
│       └── view/
│           └── application/index/index.phtml
└── public/
    └── index.php
// module/Application/src/Controller/IndexController.php
namespace Application\Controller;

use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;

class IndexController extends AbstractActionController
{
    public function indexAction()
    {
        return new ViewModel([
            'message' => 'Hello Laminas',
        ]);
    }
}

Doctrine ORM との統合

Laminas は ORM を内包せず、Doctrine ORM と組み合わせるのが定番:

composer require doctrine/doctrine-orm-module
use Doctrine\ORM\Mapping as ORM;

#[ORM\Entity]
#[ORM\Table(name: 'users')]
class User
{
    #[ORM\Id, ORM\GeneratedValue, ORM\Column(type: 'integer')]
    private int $id;

    #[ORM\Column(type: 'string')]
    private string $name;
}

// 利用
$em = $serviceManager->get('doctrine.entitymanager.orm_default');
$em->persist(new User('taro'));
$em->flush();

他フレームワークとの位置づけ

FW位置づけ採用シェア (2026)
Laravel開発生産性最重視、Web/API のデファクト★★★★★
Symfonyエンタープライズ・大規模、コンポーネント単位再利用★★★★
Laminas (旧 ZF)既存資産の保守、PSR 重視のエンタープライズ★★
CakePHP規約重視、ZF より古い系譜の保守★★
CodeIgniter軽量・学習用★★
Slim / MezzioマイクロFW、API 専用に★★★

Laminas の現在の活発度

  • GitHub Organization: laminas / mezzio。コミットは継続中だが Laravel/Symfony と比べると控えめ
  • PHP 8.x 対応は順次完了、PSR 互換性は高い
  • 新規プロジェクトでの採用は減少、既存 ZF1/ZF2/ZF3 案件の保守と移行が中心
  • エンタープライズ顧客(金融・通信・公共)で根強く使われている

ZF1 → ZF2 → ZF3 → Laminas への移行

  • ZF1 → ZF2: 名前空間導入、ServiceManager、MVC 再設計。互換性なし
  • ZF2 → ZF3: 大部分互換、パフォーマンス改善、PHP 7 対応
  • ZF3 → Laminas: 名前空間置換のみZend\\Laminas\\)。公式ツール laminas-migration で自動化可能
# ZF3 → Laminas 自動移行
composer require laminas/laminas-migration
./vendor/bin/laminas-migration migrate

FAQ

Q: 今から Laminas で新規開発すべき?
A: ほぼ NO。新規は Laravel か Symfony が無難。Mezzio は軽量 API なら選択肢になります。

Q: Zend Server / Zend Studio はどうなった?
A: Perforce 傘下で商用提供継続。ただし PHP 公式パッケージ(PHP-FPM / Composer / VSCode + Intelephense)で代替可能。

Q: PHP Zend Engine と Zend Framework は別物?
A: 別物です。Zend Engine は PHP インタプリタの言語処理系本体、Zend Framework はPHP で書かれた Web フレームワークです。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. Laravel
  2. CakePHP
  3. Symfony
  4. Zend Framework (PHP フレームワーク)
  5. DietCake
  6. phalcon
  7. CodeIgniter
  8. FuelPHP
  9. Slim
  10. Flight
  11. Yii
  12. Silex

最近更新/作成されたページ