翻訳者の序文: プロジェクト計画は業界で非常に重要視されているトピックですが、PHP プロジェクト計画について特に言及している記事はあまりないようです。 PHP Freaks でこの記事を拝見しました。専門的に書かれたものではありませんが、中国のリソースが相対的に不足し遅れている PHP 分野においては、依然として参考になる価値があります。翻訳中に、原文の言語構成が中国の読書習慣に沿っていないように感じたので、原文の論理をいくつか修正しました。リソースの共有、転載歓迎、出典を明記してください。
元のテキスト: http://www.phpfreaks.com/tutorials.php?cmd=view&tutorial_id=135
このブログの元のアーカイブ: http://blog.donews.com/phpor/articles/460809.aspx
著者の序文: 私がこれまで見てきた PHP プログラムのほとんどは、構造と構成に問題があり、計画性が欠けていることがわかります。多くの PHP プログラマーは、プロジェクトについて十分に考慮せずにコーディングに取り掛かります。これは私が 3 ~ 4 か月前に書いた記事で、その後、特に OOP テクニックについてさらに多くのことを学びました。
計画していますか?
大規模、中規模、小規模のプロジェクトを開発しているかどうかにかかわらず、計画は常に最も重要なことです。ある程度のレベルに達すると、チュートリアルや本を見なくてもプログラムが書けるようになります。おそらく、PHP を使用してデータベースに接続し、計算結果を出力し、クラスを作成する方法を知っているかもしれません。ただし、多くの人がこの段階に達すると、コーディングだけに集中し、計画を完全に無視してしまいがちです。
即興プログラミングというと素晴らしく聞こえますが、コーディングの合理化、アップグレードの容易さ、そして楽なコーディングを実現するためのツールが必要な場合は、計画を立てることが最適です。データベース構造を計画していて、コードの大まかな概要がすでにあり、作成したプログラムが何に使用されるかをよく知っていれば、コーディング作業は簡単です。ほとんどの本やチュートリアルでは、計画プロセスについて詳しく説明していません。これは、通常、著者がすでにこの作業を行っているためです。しかし、自分でプログラムを作成したい場合は、プログラムの計画が特に重要です。プログラムに新しい機能を追加して新しいバージョンを開発する場合、プログラムの計画と適切なコード構造が開発プロセスの最も重要な部分であることがわかります。
この記事では例としてゲストブック プログラムを使用しますが、PHP コードの書き方を説明するものではなく、コードをより適切に整理して計画する方法を説明します。プログラムの機能計画、クラス計画、データベース構造、テンプレート、メッセージ抽出、およびいくつかの基本的なコーディング手法について説明します。
目次
まずはこの記事の内容をご覧ください
企画プログラムの特徴
あなたのプログラムは何に使われますか?
プログラムのさまざまな機能間の関係は何ですか?
これらの機能間の関係を処理するためにどのようなコードが使用されますか?
データベース
どのデータベースを使用しますか?
データベースの使い方?
データベースには何が保存されますか?設定ファイルには何が保存されますか?
コード構造を計画する
プログラムで使用するクラスは何ですか?
これらのクラスは何に使用されますか?
それらを整理するにはどうすればよいですか?
プログラムはこれらのクラスをどのように呼び出しますか?
クラスには何が書かれ、手続き型コードには何が書かれているのでしょうか?
上記がこの記事の内容のすべてではありませんが、この記事ではこれらの問題について説明します。
プログラム機能の計画
プログラム機能を計画するための最も基本的な要件は、プログラムが何に使用されるかを知る必要があることです。まず最初に、このゲストブックと同様に、次のようなものを列挙する必要があります。 1) メッセージの表示機能、 2) メッセージの投稿機能、 3) 管理機能。 4) テンプレート機能。
これらの機能をどのように記述するか?とても簡単ですが、どのような特徴があるのか他のゲストブックを参考にして大まかに分類してみました。次に、彼らが持っていない機能のうち、どのような種類の機能を追加したいかを考えます。しかし、これはいくつかの基本的な機能の大まかな概要にすぎません
次に、これらの機能を補足および拡張し、プログラムに必要と思われる詳細な機能をリストする必要があります。以下にいくつか挙げてみましょう:
メッセージ表示機能
デフォルトでは、ページごとに 10 個のメッセージが表示されますが、ユーザーはカスタマイズすることができます
Java スクリプトを使用してメッセージを拡大および縮小します
BB コードをサポート
メッセージ投稿機能
各ページにメッセージを残すためのリンクを追加します
必須情報: ニックネーム、メッセージ
オプション情報: 電子メール、Web サイト、IM アカウント、地理的位置
隠しフォームフィールド: IP アドレス (スパム防止用)
管理機能
メッセージの編集
メッセージの削除
IP アドレスのブロック
ワードフィルター
基本設定: Web サイト名、ゲストブック名、Web サイト URL、データベースホスト、名前、ユーザー、パスワード
メッセージへの返信
シンプルなテンプレート機能の編集と追加
管理者認証
テンプレート機能
データベースまたはテキスト ファイルから変数値を抽出して置換
自分でテンプレートを作成したくない場合は、Smarty やpatTemplate
もちろん、上記のリストを書いたからといってこのプログラムを計画したわけではありませんが、基本的な機能をリストアップした後、コーディング作業が容易になることがわかりましたか?コードを書き始めるとき、私たちはどこへ行きたいのか、そしてさまざまな機能がどのように接続されているのかについて明確なアイデアを持っています。
コーディング計画
次に、コードの計画を開始します。プログラムをデータベース上で実行したいのでしょうか?使用されている場合、どのデータベースが使用されますか?それともプログラムをテキストデータベースに基づいたものにしたいのでしょうか?もしそうなら、それを達成するにはどうすればよいですか?また、コードはどのような構造に基づいているのでしょうか?大規模なプログラム開発に対する私からのアドバイスは 3 つだけです。それはオブジェクト指向プログラミングです。
大規模な PHP プログラムを開発するための最適なコード構造は、OOP を使用することです。たとえば、OOP を使用して開発されたフォーラム プログラムがあります。プログラムには view というクラスがあり、view には viewThreads() というメソッドがあり、パラメータを受け取ることで投稿コンテンツを出力できます。毎回特定の投稿を表示する viewforum.php というページがある場合、$view->viewThreads() を呼び出して結果を出力できます。検索機能があり、投稿の内容も出力する必要がある場合は、viewThreads() メソッドを呼び出すだけで済みます。 OOPを使用しない場合、投稿を出力するコードを変更したい場合、投稿を表示するファイルごとに変更する必要がありますが、OOPを使用するとクラスコードの変更だけで済みます。しかし、OOP を使用する本当の目的は、コードを整理し、拡張しやすくすることです。
少なくともこのゲストブックでは、プログラミングに OOP を使用することにしたためです。ここでの問題は、どのクラスを作成するかということです。これらのクラスは何を達成するために使用されますか?データベースを使用する場合は、データベースとのデータ交換を処理するために少なくとも 1 つのクラスが必要です。さらに、出力を処理してメッセージを追加するためのメッセージ処理クラス、管理作業を完了するための管理クラス、およびテンプレートを処理するためのテンプレート クラスが必要です。一部の大規模なプロジェクトでは、Smarty や patTemplate などの既製のテンプレート クラスを使用することをお勧めします。これにより、多くの面倒な作業が回避され、プログラムにいくつかの強力な機能が実装されます。最も重要な点は、現在作成しているものが Guestbook であるということです。テンプレート エンジンではないため、そのまま使用してください。
どのクラスを作成するかを決めるときは、これらのクラスとそのメソッドをリストするのが最善です。以下は例です:
コード:
<?class enter {
はクラスの名前と同じです。 $num メッセージ
}
function post($name, $email, $website, $aim, $yim, $msn, $icq, $title, $post) {
転送されたデータはデータベースに書き込まれます
}
明らかに、これらのクラスを完成するには多くのコーディング作業を行う必要がありますが、コードの一般的な構造はすでにわかっています。作業がはるかに簡単になります。
この例ではすべての計画作業が完了していないため、他のクラスでも同じ作業を行う必要があります。ただし、この例ではその方法を示しています。大規模な CMS、フォーラム、小規模なゲストブックのいずれであっても、このアプローチによりコードの記述が改善されます。
コーディング作業を簡単にする方法
テンプレート
プログラミングを始めるときは、テンプレートとテンプレートのメカニズムを無視してはなりません。すべてのコーディング作業はテンプレートに従う必要があるため、最後にテンプレートを残さないでください。 Smarty テンプレート エンジンを使用することをお勧めします。もちろん patTemplate も良いです。ただし、どちらを選択する場合でも、自分で作成する場合でも、テンプレートはエンド ユーザーに最も近い部分であるため、この作業を最初に行う必要があります。テンプレートを管理するクラスを作成することをお勧めします。このクラスはテンプレートが行うべきことを行うのではなく、テンプレートを管理するだけです。 Smarty テンプレートを使用する場合、これを行うことができます:
コード:
class Template {
} T 関数 Showtpl ($ TPL) {
$ SMARTY-& GT ディスプレイ ($ TPL)}}
?
もっと仕事をしなければなりません。ただし、何度も記述しなくても、最初のページで Smarty の呼び出しと出力コードを参照するだけであれば、上記のクラスで十分です。
抽象化処理
抽象化処理とは?よく耳にするのは、コードを変更せずに多くのデータベースにアクセスできるようにするテクノロジーである「データベース抽象化」です。ただし、いわゆる抽象化により、代名詞を簡単にコーディングすることもできます。すべてのページの特定の部分 (ヘッダー、フッター、変数参照など) を同じコンテンツにする必要がある場合、コンテンツのこの部分を何度も書き直すことができます。コンテンツを複製するこれらのページを含むページを作成し、すべてのページでそれを参照できます。ページ上に重複したコンテンツを出力するときにパブリック ファイルを参照するこの方法は、Smarty によって廃止されましたが、特に一部の大規模なプログラムでは、依然として代替の用途があります。
メッセージ抽象化は、抽象アプリケーションの例です。このゲストブックでは、「メッセージは正常に送信されました」、「ニックネームを入力してください」などのメッセージを出力する必要があり、それを処理するメッセージ クラスを作成できます:
code:
class msg {
関数 msg($num) {
num) {
$message .= '間違ったコードエラー'; echo $message;
}
}
?>
ログインページを作成すると、メッセージにアクセスできます。このようなクラス:
コード:
include 'msg.php';
if($pass != "arr") {
$msg = new msg(2) } elseif($user ! = 1user1) {
$msg = new msg(1);
}
?>
明らかに、上記は良い例ではありませんが、これを通じてメッセージの抽象化の利点がわかります。この例を記事に導入した理由は、プログラミングをより便利にするためです。フィードバック情報を出力する必要がある場合は、同様のメッセージ抽象化メカニズムを使用して、ファイルを変更することで関連する作業を簡単に完了できます。
それだけでなく、新しいメッセージを追加する必要がある場合は、新しいケースを追加するだけでよく、echo ステートメントを追加せずに、関連する場所でそれを呼び出すだけです。テンプレートを使用する場合、上記のように単純にクラスにメッセージを配置することはできません。代わりに、クラスが呼び出されたときに、事前に作成されたサブテンプレートを使用してメッセージを表示します。このメソッドは、Smarty Just コードでわずか 3 行です。
さて、上で述べた抽象化については理解できたはずです。
忘れてはいけないもう 1 つの重要な点は、コードに適切なインデントを追加することです。クラス内の最初のメソッド、最初のカスタム関数、プログラム内のループ ステートメントと式など。また、コメントは無視できません。作成したばかりのコードが何をするのかを正確に把握する必要がありますが、数か月後にはコードをアップグレードする必要があるかもしれません。この時点では、コメント付きのコードのほうがはるかに読みやすいことがわかります。
計画してください!
この記事を読むと、私が常に強調してきたのは計画であり、それによってコーディングが容易になることがわかるはずです。プロジェクトをしっかり計画すれば、すべてがスムーズに進みます。たとえば、特定の関数のクラスを作成する場合、これらの関数のデバッグは簡単な作業になります。テンプレート エンジンを使用すると、コードがよりクリーンになり、保守とアップグレードが容易になります。
作業方法を決定したら、それらのメソッドをコードのすべての部分に適用します。プロジェクトを計画し、適切な作業方法を使用するたびに、コーディングの品質が飛躍的に向上していることがわかります。計画には時間がかかるので時間をかけたくないかもしれませんが、新しい機能を追加したり、プログラムをアップグレードしたり、コードを修正したり、インターフェイスを変更したりする場合、それは非常に骨の折れる作業です。
この記事を読んだ後、計画に興味がある場合は、上記の例のようにプログラムのすべての側面をリストしてから、いくつかの簡単なプログラムを作成し、OOP ベースのプログラミングと Smarty の非表示/表示機能の使用を試してみてください。 OOP プログラミングをまだ理解していない場合でも、心配しないでください。最初にいくつかのチュートリアルをご覧ください。
この記事では、プロジェクト計画の基本的な方法をいくつか説明します。明らかに、プロジェクト計画にはこれら以外にもさまざまな方法があります。データベース設計についてさらに学びたい場合は、このサイトの LAMP チュートリアルを参照してください。さらに、このサイトには上記のメッセージ抽象化に関するチュートリアルもあります。いずれにせよ、計画を立てることは仕事に大いに役立ちますので、この記事がお役に立てば幸いです。