1

私は PHP CMS のようなプロジェクトに取り組んでおり、PHP で CRUD 機能を処理する最も便利な方法を見つけようとしています。

CMS は手続き型 PHP で完全にプログラミングされており (OOP なし - 多くの人がこれに同意しないことはわかっています...)、すべてを可能な限りシンプルかつ軽量に保ち、高度に再利用可能な関数とコードのスニペットを作成するように設計されています。 .

CMS では、複数のモジュールを必要に応じてインストール/アクティブ化できます。これらのモジュールはさまざまなタイプのコンテンツを記述しているため、ページ、ニュース、ブログなどのいくつかの名前を付けることになるでしょう。

このコンテンツ タイプごとに、CRUD 操作を作成する必要があります。現在、これを実現する最も便利な方法を見つけようとしています。

1 つの要件は、これらの各コンテンツ タイプのフォームが 1 つの外部ファイルに含まれていること (挿入と編集の両方) であり、サーバー側の入力検証を統合する方法があればプラスになります。

4

4 に答える 4

4

CRUD操作とは、(面倒な)データベースクエリだけを意味しますか?

コンテンツ タイプ間でいくつかの共通フィールドを除いて、特定のコンテンツ タイプのすべてのデータがシリアル化された連想配列として TEXT フィールドに格納されるように、データベースを簡単にセットアップすることもできます。

この方法では、CRUD 関数に渡されたデータが盲目的にシリアル化されるだけなので、特定のコンテンツ タイプを CRUD するために必要なクエリのセットは 1 つだけです。

たとえば、コンテンツのタイトル、作成/更新日、タグ、および短い説明を共通データと見なすことを宣言するとします。そこから、ブログとページのコンテンツ タイプがあります。

データベーステーブルを次のように作成する可能性があります。

CREATE TABLE `content` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR  NOT NULL,
  `short_description` TEXT  NOT NULL,
  `tags` TEXT ,
  `data` TEXT ,
  `content_type` INT  NOT NULL,
  `created_at` DATETIME  NOT NULL,
  `updated_at` DATETIME  NOT NULL,
  PRIMARY KEY (`id`)
)

(先に進み、content_type の参照テーブルを作成すると仮定します)

ブログには「pingbacks」などのデータが必要で、ページには本文だけが必要な場合がありますが、次のブログの例のような出力を保存するだけです。

$data = serialize(array(
    "body" => "Lorem ipsum",
    "pingbacks" => array()
));

更新は簡単です。データベースからデータを取得するたびに、コンテンツ タイプに基づいて選択された形式に編集するためにデータをシリアル化解除します。表示も同じように機能します。コンテンツ タイプに基づいてテンプレートを取得し、シリアル化されていないデータ配列を送信するだけです。テンプレートは、$data['pingbacks'] を取得するだけで、データの保存方法を気にする必要はありません。

フォームに関しては、反 OOP 規約を破り、フォーム生成ライブラリを見つけることをお勧めします。フレームワークから抽出できる場合は、Zend フレームワークのZend_ConfigおよびZend_ValidateでZend_Formを使用します。(この状況での Zend_Config はすべて、XML および INI ファイルを読み込んでトラバースするための便利なインターフェイスです) 生活を本当に快適にします。XML ファイルに各コンテンツ タイプのフォームを定義させることができます。ページにフォームをレンダリングし (コンテンツ タイプに基づいて XML を取得)、フィルター処理されたデータを取得し、次のような「共通フィールド」を削除するだけです。名前、作成日/更新日、残っているものをデータベースにシリアル化します。特定のコンテンツ タイプのスキーマに関する知識は必要ありません (厳密にしたい場合を除きます)。

個人的なことはさておき、Zend_Form (Zend_Validate と Zend_Config を使用) を取得し、Doctrineを ORM/データベース抽象化レイヤーとして使用することを検討することを強くお勧めします。少なくとも Doctrine を使用すると、データベースで操作を実行する際の作業が非常に簡単になることに気付くかもしれません。

于 2008-12-22T18:19:01.943 に答える
1

個人的なことはさておき、Zend_Form (Zend_Validate と Zend_Config を使用) を取得し、Doctrine を ORM/データベース抽象化レイヤーとして使用することを検討することを強くお勧めします。少なくとも Doctrine を使用すると、データベースで操作を実行する際の作業が非常に簡単になることに気付くかもしれません。

dcousineau さんに同意します。すでに完了しているのに、なぜ自分でロールバックするのですか? Zend DBも参照してください。PHP4 および 5 のソリューションが必要な場合はPHP ADOdbを参照してください。

私は最近学術プロジェクトを開始し、あなたと同じ欲求を持っていました。最終的には、PHP ADoDB を使用しました。

于 2008-12-23T21:29:23.743 に答える
0

www.ajaxcrud.com をお勧めします。使いやすく、軽量で、数秒で起動して実行できます。

于 2013-11-27T15:40:26.570 に答える