2009-10-26 16 views
5

私は簡単なブログを作っています。私はこのためにクラスを使いたいと思います。私はこれを行う最善の方法が何であるか疑問に思っています。これまで3つの方法があります。私は、リンク、投稿、コメントを持つクラスを作った。このデータをすべて1つの配列に戻すことの問題は、1回だけエコーされるはずのデータが、戻ってきた行の何回もエコーしていたということでした。何人かは、これは正しいと私はすべてを単一の配列で持っているべきだと言うだろう。私はまだこれが正しい道だとは確信していません。PHPクラスの設計。正しい方法

これらの3つのことを処理するためにクラスを設計する人がいるかも知りません。これまでクラスに必要なのは、データベースへのリンクだけです。私が使うべき他のメンバーは私には不明です。繰り返しますが、ここでどのように行うべきかについての視点を得たいと思います。

おかげで、 ジョン


OK、私はこのような3つの方法と言っていたので、もし:あなたたちが使用するメンバーの一部であるかもしれない何

var $db; 

function GetPosts() { 
//posts 
} 

function GetComments() { 
// blog comments 
} 

function GetLinks() { 
// links for the blog 
} 

を?

また、他のメソッドを呼び出すメソッドを用意する必要があるかどうかも疑問です。ただ1つのパブリックメソッドを作成し、これらのメソッドをすべて非公開にします。パブリックメソッドはプライベートメソッドを呼び出し、その値を返します。これはお勧めですか?

+0

無料のオープンソースのブログプラットフォームを多数ご用意しており、自分でやってみたいと思っていますか?どのような特別な機能を提案していますか? – jldupont

+3

実際には、ブログの投稿やコメント以外のものはありません。私はプログラミング面を楽しんでいるだけです。 :) – JohnB

+2

私は、彼の目的は、他の人が使うブログソフトウェアを作るよりも、PHPやデザインを学ぶことだと考えています。 – marr75

答えて

0

CakePHPは、広く採用されているCakePHPフレームワークを使用してtutorial on creating a blogです。あなたのブログをプログラミングしながら新しいフレームワークを学ぶことに興味があるなら、そのことをお勧めします。

エンティティ(リンク、投稿のコメント)の読み込みと保存(永続化)や永続性フレームワーク(例:Doctrine ORM for PHP)を扱うためのクラスを作成することをおすすめします。

問題は、さまざまな方法で説明した機能を実装できることです。普遍的な答えはありません。いくつかのコードを提出すれば、具体的なアドバイスをする方が簡単です。

+0

こんにちはGergely Oroszさん、ありがとうございました。私は既にいくつかの異なるフレームワークを試しましたが、私はそれほど気にしません。とにかく私には、自分でやって楽しむことができます。私はヘルパー機能がたくさんあることを知っていますが、私は他の "プログラマー"と会って、そのフレームワークの背後に何が起こっているのか分かりません。私は間違ったことをしないでください、私はフレームワークが好きですが、私はもう少しの相互作用が好きです。私は上記のクラスにいくつかのことを追加し、多分私にいくつかの指摘を与えることができます。再度、感謝します! – JohnB

1

自分で書きたい場合は、ブログの各部分(投稿オブジェクト、コメントオブジェクト、リンクオブジェクト)ごとに別々のオブジェクトを作成することから始めます。

次に、これらのオブジェクトが互いにどのように相互作用するか(たとえば、投稿オブジェクトにはコメントオブジェクトの配列が含まれている可能性がある)、それらが基本的なCRUD(作成、読み込み、削除)操作。

+0

こんにちはGSto、返信いただきありがとうございます。私はブログの各部分について別々のクラスを持つことについてあなたに同意します。このようにすると、抽象化を損なわないようにすることが難しくなると聞きました。私はまだこれについて確信していません。私は上記の方法にいくつかの事柄を追加して、あなたがそれを変更するために何をするかを私に教えてもらえるかもしれません。 – JohnB

+0

このようにすることで、抽象化を傷つけるでしょうか?私は、すべてを扱う1つのブログクラスを持つ代わりに、この方法を維持する方が簡単だと考えています。 – GSto

0

達成したいタスクの詳細はわかりませんが、例えば、GetPostManager()メソッドを持つ1つのファクトリクラスのブログについて考えてみてください。 PostManagerは、投稿を作成、編集、更新し、それらを選択することもできます。したがって、$ Blog-> GetPostManager() - > GetPosts($ datefrom、$ dateto)はPostCollectionクラスを返します。このクラスはCountableおよびIteratorインターフェイスを実装して、投稿を参照します。 PostCollectionはPostItemクラスを含む配列です。 PostItemクラスは単純なクラスで、データベースにマップすることができます。

+0

ありがとうFractalizeR。工場のパターンは良いと思います。だから、これらの3つの方法でクラスを作成するのは間違っていると言いますか?物事を行う方法は100以上ありますが、私は「最良の」方法を探していると思います。必ずしも最も簡単なわけではありません。私はこれをやりたければ、最終的にスケールすることができるはずだと考えています。 – JohnB

+0

いいえ、3つの方法のクラスは良いです...しかし、システムを拡張するまで。より多くの機能を追加したいのですが、あなたの1つのクラスは、ますます多くの方法で混雑します。だから、最初にいくつかの構造を作る方が良いと思います。特にそれほど複雑でない場合は特に。 –

関連する問題