ホームページ バックエンド開発 PHPチュートリアル オブジェクト指向 PHP 開発モデルに関する優れた記事 (短縮版)_PHP チュートリアル

オブジェクト指向 PHP 開発モデルに関する優れた記事 (短縮版)_PHP チュートリアル

Jul 21, 2016 pm 03:56 PM
php いいえ 存在する 場所 使いやすい 物体 開発する モデル バージョン のために

なぜこの部分が使いにくいのか、あの部分も使いにくいのか、PHP を批判している人を見かけました。実際、厳密に言えば、使いやすい言語はなく、厳格な標準を備えた言語もありません。使用する前に、これらの標準が完成するまで待つことはできません。どの言語を使っても、プログラマーは自分自身に頼ってプログラムを書く必要があると思います。最近少しずつ情報を整理して発信していきますので、皆様のご意見、ご支援をよろしくお願いいたします

==================== ========= ===========
オブジェクト指向 PHP 開発モデル (改善予定...)
============== ========== ===============

1. 環境
サーバー: Linux (Apache 2.x、MySQL4.1.x、PHP4、Perl、 SHELL、CVS、Sambar) クライアント: Windows (Ie6、UltraEdit、その他の補助ツール)
テストマシン: windows98/2K/xp/Linux (Ie5、Ie6、mozilla、firefox)

2 番目、Web ページ、プログラムの 3 層、データベース
いわゆる Web ページは通常の静的な Web ページではありません。ここでの Web ページは、プロジェクト分析の特定の状況に応じて分割され、HTML テンプレートに作成されます。ここでのデータベースには、データベースと他のプログラムとのインターフェイス プログラムが含まれます。通常、プログラムとデータベース プログラムは 1 つのファイルに混在できますが、他のプログラムがデータベースを使用してこれらの関数を直接呼び出す場合は、SQL ステートメントに直接触れることができないため、これらを関数の形でできるだけ分離する必要があります。 。

3. プロジェクト分析 - データ分析
プロジェクトがニーズ分析を受けた後、実際の開発の前に行うべき最初のステップはデータ分析です。データ分析とは、プロジェクトのプロセスで使用されるあらゆる種類のデータを
その特性に応じて分類し、それらを個別に整理することです。もちろん、それらの間にはさまざまな関係性が存在する可能性があります。このステップをしっかりと行うと、プロジェクト分析作業が順調にスタートするだけでなく、その後のプロジェクト構造分析やデータ処理プロセス分析にも非常に便利になります。

4. プロジェクト分析 - データの抽象化
データ分析後、いくつかの大まかなデータ モデルといくつかの基本的な小さなデータ モデルで構成される大規模なモデルが頭の中にできるはずです。通常の状況では、必要な変更をいくつか加えます。変更する必要のないデータを維持するためのデータベースを作成し、変更する必要のないデータからいくつかの定数を作成し、これらのデータ型に関連するクラスを抽象化し、関連するインターフェイス (関数形式) を確立します。 、メソッド) データベース操作用 データ データに関連付けられた操作は、いくつかの基本メソッドを抽象化することもできます。
それらをプログラミングで呼び出すだけで済みます。

5. プロジェクト分析 – インターフェース分析
1つまたは複数の製品を組み合わせる目的でデータを分析しました。製品を作りたいので、それを他の人に見せる必要があります。
そのため、引き続きインターフェースを設計する必要があります。さまざまなインターフェースを可能な限り包括的に検討した後、設計したインターフェースをテンプレートにし、対応する処理インターフェースプログラムを作成します(つまり、プログラムの観点から見ると、インターフェースはもデータの一種です)、プログラムを書くときに使用されます。

6. プロジェクト分析 - プロセス設計
ウェブサイトのプログラムは非常にシンプルで、プロセスに従い、設計したさまざまなデータを呼び出すだけです。

7. 事例分析
ユーザーシステム、今度は最も単純な例であるユーザーシステムを分析します。
1. データ分析では、最も単純なユーザーシステムを分析するため、ここにはユーザー名
とパスワードの 2 つのデータしかありません。分析を続けると、それに番号 (id) を追加する必要があると考えられます。各レコードには 3 つのデータがあり、これ以上追加できるものはありません。
2. データの抽象化、3つのデータだけを持つデータモデル。その可能な操作方法を考えて、データの保存とそこにそれぞれ
Databaseインターフェース(savetodb()、getfromdb()、delete())を用意します。ライブラリを終了するときにも削除されます (password())。また、ユーザーシステムの管理・閲覧を考慮し、データの収集タイプ(リスト)も用意します。
3. インターフェース分析、ログイン、検証成功、検証エラー、パスワード変更、パスワード変更成功、パスワード変更エラー、
アカウントへの登録、登録成功、登録エラー 管理 - ユーザーリスト、管理 - ユーザー情報表示、管理 --ユーザー
パスワードの変更、管理 -- ユーザーの削除。
4. サンプルコード
PHPコード:



コードをコピー

コードは以下の通りです:




include_once "include.php";
/*
** 目的: ユーザーシステムデータの抽象化
** 著者: Yue Xinming
** 時間: 2005-8-30 10:05
* /
var $id = 0;
var $Password = "";
var $tpl = ""; ** 関数: コンストラクター、クラスによって使用されるデータベース接続を指定します
** パラメーターの説明: $tpl、表示テンプレート サービス ハンドル; $userdb、データベース接続
** 戻り値: なし
** 作成者: Yue Xinming
* *作成時刻: 2005-8-30 10:37
*/
function User($vtpl = "", $userdb = "") {
if ($vtpl == "") {
global $tpl ;定義されたデータベース接続
$this->tpl if ($userdb == "") {
global $db; / 外部定義データベース接続

/*
** 機能: データをデータベースに保存します
** パラメータの説明:パラメーターなし
**返品値:true/false、success/failth **著者:yue xinming
**作成時間:2005-8-30 10:24 "UPDATE user SET Name='%s' 、Password='%s' " "WHERE $this->パスワード, }else {
$strSQL = sprintf("INSERT user (名前, パスワード) , $this->名前,
; se;入手データベースからのレコード
** パラメーターの説明: $id、レコード番号
** 戻り値: true/false、成功/失敗
** 作成者: Yue Xinming
** 作成時刻: 2005-8-30 10:32
*/
function getfromdb($id = 0) {
if ($id) {
$ strSQL = sprintf("SELECT * FROM user WHERE id='%s'", $id);
} else if ($ this->id) {
$strSQL = sprintf("SELECT * FROM user WHERE id=' %s'", ); "") { $strSQL = sprintf("SELECT * FROM ユーザー); db->query($strSQL);
if ($this->db->next_record()) {
$this->id = $this->db->f("id")
$this->名前 ;
trueを返します。else {
false;戻り値: true/false、成功/失敗
** 作成者: Yue Xinming
** 作成時刻: 2005-8-30 10:47
*/使う 使う 使う 使う アウト アウト アウト アウト「s」の '' '' 'sut — ‐ ‐ ‐ ‐ ‐ reは、> query($ strsql)を記録します->id) {
$strSQL = sprintf("DELETE FROM user WHERE id='%s'", $this->id);
$this->db->query( $strSQL);

/*
** 関数: ログインインターフェイスを表示します
** パラメータの説明: $placeholder、表示位置
** 戻り値: なし
** 作成者: Yue Xinming
** 作成時刻: 2005-8-30 11 :00
*/
function showLogin($placeholder) {
$this->tpl->addBlockfile($placeholder, "user_showLogin",
"tpl.user_showLogin.html"
tpl->setCurrentBlock("user_showLogin" );
「strUsername」=>、
strPassword" => "パスワード"
tpl->parseCurrentBlock("user_showLogin")
}

/*
** 関数: ログイン情報を処理します
* * パラメータの説明 : $placeholder、表示位置
** 戻り値 : true/false、成功/失敗
** 作成者: Yue Xinming
** 作成時刻: 2005-8-30 11:12
*/
function getLogin( $placeholder = "") {
$this ->tpl->setVarable($placeholder, "ユーザー名を空にすることはできません!");
$this->getfromdb(); $_POST["パスワード"]) {
$this->tpl->setVarable($placeholder, "ログインに失敗しました!" ; , 表示位置
** Return値:なし
**著者:yue xinming
**作成時間:2005-8-30 13:33
** 関数: 登録情報の処理
** パラメータの説明: $placeholder、表示位置
** 戻り値: true/false、登録成功/登録失敗
** 著者: Yue Xinming
** 作成時間: 2005-8 -30 15:49
*/
function getRegister($placeholder = "") {
if (isset($_POST["register")) {
if ($_POST["username"] == "") { / / ユーザー名の正当性チェック、他のチェック方法に変更可能
この名前は違法です。");
//パスワードの合法性チェック
/エラープロンプトT $ this-> tpl-> setVariable($ Placeholder、" 2つの入力パスワードは一貫していません!");
}
false; $this->db->query($strSQL);
$this->db->next_record();
if ($this->db->f("COUNT(*)") > 0) {
return false;
else {
$strSQL = sprintf("INSERT INTO user (名前, パスワード) "
. "VALUES('%s', '%s')",
$this- >名前、
$this->パスワード
$this-& gt;db->query($strSQL);
return true;
} else {

}
}
}//クラスの終わり ユーザー定義

/*
** 目的: ユーザー システム データ リストの抽象化
** 著者: Yue Xinming
** 時間: 2005-8-30 17:21
*/
class UserList {
var $ ページ = 0;
var $pagesize = 0;
var $db == ";
var $tpl = "";

/*
** 関数: コンストラクター、新しいクラスの作成時にいくつかの変数を初期化します
** パラメーターの説明: パラメーターなし
** 戻り値: なし
** 著者: Yue Xinming
** 作成時刻: 2005-8-30 15:49
*/
function UserList($page = 1, $pagesize = 10,
db = "") {
$this->page = $page;
$ this->pagesize = $pagesize;
$this->condition = $condition;
if ($vdb != "") {
$this->db = $vdb } else {
!= " ") {
$this->tpl = $vtpl; else {
$this->tpl = $tpl; 

$strSQL = sprintf("SELECT COUNT(*) FROM user WHERE '%s'",
$this->条件
); 
$this->db->query($strSQL); 
$this->db->next_record(); 
$this->recordsum = $this->db->f("COUNT(*)"); 

$this->pages = ceil($this->>recordsum / $this->pagesize); 

$strSQL = sprintf("SELECT * FROM user WHERE '%s' LIMIT '%s', '%s'",
$this->condition,
$this->ページ * $this->ページサイズ、
$this->pagesize + 1
); 
$this->db->query($strSQL); 
for ($i = 0; $this->db->next_record(); $i ++) {
$this->Users[$i] = new User($this->tpl, $これ->db); 
$this->Users[$i]->id = $this->db->f("id"); 
$this->Users[$i]->Name = $this->db->f("Name"); 
$this->ユーザー[$i]->パスワード = $this->db->f("パスワード"); 
}
}


/*
** 関数: リストの表示
** パラメータの説明: $placeholder、表示位置
** 戻り値: なし
** 作成者: Yue Xinming
** 作成時刻: 2005-8-31 9: 16
*/
関数 showuserList ($ Placeholder) {
$ this-& gt; addBlockfile ($ Placeholder, "Showuserlist", "TPL.ShowuserList.h tml "); TPL- & gt; setcurrentblock ("showuserlist"); // 対応する処理コードをここに追加します
$ This- & GTL- & GT; ("ユーザー名") "," 操作 "); 作 $ RecordOperations = Array (" パスワードのリセット "= & GT;" 操作 = PASSWD & ID = ",
" 削除する "= & gt;" 操作 = 削除 & id = "
); (Foreach ($ StrTitles As $ Title) {
$ This-& GT; TPL-& GT; SetcurrentBlock ("SHOWRECORDSTITLE"); Trhead ", $ Title);
$ This ->tpl->parseCurrentBlock("showRecordsTitle ");
foreach ($this->$user としてのユーザー) {
$this->tpl->setCurrentBlock("showRecords");
$this->tpl ->setCurrentBlock("showCell") ; $&gt> , $_SERVER["REQUEST_URI"] . $user->id) 
$this->tpl->parseCurrentBlock("showCell"); 
$this->tpl->parseCurrentBlock("showRecords"); 
}
} else { // 無记录
$this->tpl->setCurrentBlock("showRecords"); 
$this->tpl->setCurrentBlock("showCell"); 
$this->tpl->setVariable("strCell", "無记录"); 
$this->tpl->parseCurrentBlock("showCell"); 
$this->tpl->setCurrentBlock("showCell"); 
$this->tpl->setVariable("strCell", " "); 
$this->tpl->parseCurrentBlock("showCell"); 
$this->tpl->parseCurrentBlock("showRecords"); 
}
$this->tpl->setCurrentBlock("showPageInfo"); 
$this->tpl->setVariable(array("intColspan" => "2",
"intRecordSum" =>gt; $this->recordsum,
"intPage" => $this->ページ、
"intPages" => $this->pages
)
); 
$this->tpl->parseCurrentBlock("showPageInfo"); 
$this->tpl->parseCurrentBlock("showUserList"); 
}
}
?>  

HTML 代コード:

[Ctrl+A ですべて選択 注: 外部 Js を導入する必要がある場合は、実行するために更新する必要があります]

www.bkjia.com本当http://www.bkjia.com/PHPjc/317998.html技術記事なぜこの部分が使いにくいのか、あの部分も使いにくいのか、PHP を批判している人を見かけました。実際、厳密に言えば、使いやすい言語はなく、厳格な基準を持った言語もありません...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

See all articles