PHP Manual
/
ドクトリン

ドクトリンシリーズ - イントロダクション

27. 08. 2021

Doctrine はオブジェクト指向のデータベース作業を行うための先進的な PHP ライブラリです。Doctrine の主な目的・目標は、データエンティティを使ってデータベーススキーマを記述し、完全にオブジェクト指向な方法でデータを操作することです。

このパラダイムはORM(Object-relational mapping)と呼ばれ、リレーショナルデータベースに格納されたデータをオブジェクト指向言語で利用できるように変換(ラッピング)するためのデザインパターンである。したがって、Doctrine を理解し使用するためには、少なくとも オブジェクト指向プログラミング の基本を理解している必要があるのです。

なぜドクトリンを学ぶのか?

いろいろな理由があるんです。

  • Doctrine は最も広く使われている ORM データベースで、先進的な PHP コミュニティのほとんどで使われています。
  • PHPアプリケーションの設計を根本的に簡素化することができます。
  • データベーススキーマの設計、バージョンアップ、転送、バックアップに一貫した方法を提供します。
  • 何も考えず、何も設定せずとも、パッケージをダウンロードすれば、多くのデータベーステーブルを入手できるのです。
  • テーブル間の関係が実際の物理的な実体になる
  • データベースの出力は、普通の型付きのない配列ではなく、実際の物理的なオブジェクトを得ることができます
  • 1つのトランザクション内で多くの操作を同時に実行する簡単な方法を得ることができる
  • いつ何が起こるか、そしてそれが安全に起こるかを知るだけで、アプリケーションのセキュリティと耐障害性を簡単に向上させることができます。
  • 簡単にテスト可能なコードとデータベースレイヤーを得ることができる
  • Doctrineの周りには、多くの問題をエレガントに解決してくれるエコシステムが存在していることがわかります。他の方法ではほとんど解決できない複雑な問題に対して、簡単な解決策が見つかることも多いでしょう。
  • 新しいことをたくさん学び、新しいアイデアを探求し、データベースの可能性を最大限に活用することができます。
  • 複雑なSQLクエリから解放されます。Doctrine は非常に強力なカスタムクエリ作成インターフェイス (DQL) を提供します。
  • アプリケーションが高速化する。アプリケーションの最適化の余地、遅延ロードの活用、アプリケーションのボトルネックの発見が容易になります。

この記事の著者 (Jan Barasek) の長年の意見は、Doctrine が PHP のデータベースを扱うのに最も適した方法であるということです。単純に競合がいないのです。

どうやって始めるの?

Doctrineを本格的に使い始める前に、環境を整える必要があります。PHPを始めたばかりであったり、上級の知識がない場合は、自動的にフルサポートを統合するBaraja Doctrine 拡張パッケージで、Nette Frameworkをインストールするのが最良の選択です。まず、Composerからパッケージをダウンロードし、DI Extensionをセットアップすると、Doctrineが自動的に動き出します。

Doctrine を正しく動作させるためには、空のデータベースを用意し (Doctrine は既存のプロジェクトでも動作しますが、既存のデータを上書きするリスクがあるので最初のステップでは不適切です)、接続を設定する必要があります。Doctrine は単なるデータベースライブラリではなく、高度なデータベースフレームワークを提供するため、その他の設定を解決する ことが必要です。Netteの場合、ほとんどの設定はそのパッケージで自動的に上書きされますが、最小構成では、サーバーが APCu Cache または SQLite3 拡張をサポートしている必要があります。

正しく設定されていれば、Nette に新しい DI サービス Baraja</doctrine>EntityManager が作成され、Presenter にインジェクト(https://doc.nette.org/cs/3.1/di-usage)できるようになります。

namespace App\FrontModule\Presenters;
use Baraja\Doctrine\EntityManager;
final class HomepagePresenter extends BasePresenter
{
#[Inject]
public EntityManager $entityManager;
}

基本的な EntityManager サービスを注入することができれば、Doctrine の学習と作業を開始することができます。

どのように進めればいいのか?

以下の章では、Doctrineの技術リファレンスガイド、長年の経験、デザインパターン、既成のソリューションなどを組み合わせています。このセミナーでは、独自のエンティティの定義から物理データベーススキーマの生成、バージョニングツールでの作業、そして本番環境への導入まで、Doctrine のすべての基本的な要素について解説します。

私は非常に長い間Doctrineを使用しており、何千ものケースを解決してきました。Doctrine を使ってデータベースの速度を最適化する方法や、データベースを適切に設計する方法などのヒントを紹介します。また、既存のプロジェクトにDoctrineを使用することもできます(一定の条件を満たす場合)ので、その方法を紹介します。

この連載は、私のトレーニングやコンサルティングの受講生を支援するために作成されました。特定のトピックについてより詳細な議論や説明が必要な場合は、jan@barasek.com までメールでお問い合わせください。比較的要求の厳しい技術であるため、質問はすべて有料の相談として扱います。

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
2.
Status:
All systems normal.
2024