ホームページ php教程 php手册 オブジェクト指向 PHP 開発モデルに関する優れた記事 (短縮版)

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

Jun 13, 2016 pm 12:33 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 ページではありません。プロジェクト分析の特定の条件に従って分割された後の HTML
; ここでのデータベースには、データベースおよび他の部分とのインターフェイス プログラムが含まれます。通常、プログラムとデータベース
プログラムは 1 つのファイルに混在しますが、これらは次のように分離される必要があります。他のプログラムがデータを使用したい場合
ライブラリはこれらの関数を直接呼び出すことができますが、SQL ステートメントに直接アクセスすることはできません。

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

4. プロジェクト分析 - データの抽象化
データ分析後、いくつかの大まかなデータ モデルといくつかの基本データの小さなモデルを頭の中で組み合わせて大きなモデルを作成できるはずです。この場合、変更が必要なデータの保守用にデータベースを作成し、変更の必要のないデータについては定数を作成し、これらのデータ型に関連するクラスを抽象化し、データベース操作に関連するメソッドを確立します。 . >関係インターフェイス (関数形式、つまりメソッド)、データ、およびデータ関連の操作もいくつかの基本的なメソッドを抽象化できます。
プログラミングで呼び出すだけで済みます。

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

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

7. ケース分析
ユーザー システム、次に最も単純な例であるユーザー システムを分析します。
1. データ分析では、最も単純なユーザー システムを分析するため、ここにはユーザー名
とパスワードの 2 つのデータしかありません。分析を続けると、番号も追加する必要があると考えられます。 (id) を各レコードに)、データが 3 つあるので、実際に追加する
は何もありません。
2. データの抽象化、データが 3 つだけのデータ モデル、その可能な操作方法を考えて、次のような手配をします。
データベース インターフェイス (savetodb()、getfromdb()、delete()) をそれぞれ用意します。また、データベースに出入りするデータの削除 (password()) も行います。また、ユーザーシステムの管理・閲覧を考慮し、データの収集タイプ(リスト)も用意します。
3.インターフェース分析、ログイン、検証成功、検証エラー、パスワード変更、パスワード変更成功、パスワード変更エラー、
へのユーザー登録、登録成功、登録エラー 管理-ユーザーリスト、管理-ユーザー情報閲覧。 、管理 - ユーザー
のパスワードを変更、管理 - ユーザーを削除。
4. サンプルコード
PHP コード:



コードをコピー

コードは次のとおりです。




include_once "include.php";
/*
** 目的: ユーザー システム データの抽象化
** 作成者: Yueレター
** 時刻: 2005-8-30 10:05
*/
class User {
var $id = 0;
var $Name = ""
var $Password = "";

var $db = "";
var $tpl = ""

/*
** 関数: コンストラクター、指定されたクラス データベース接続使用
** パラメータの説明: $tpl、表示テンプレート サービス ハンドル; $userdb、データベース接続
** 戻り値: なし
** 作成者: Yue Xinming
** 作成時間: 2005- 8-30 10:37
*/
function User($vtpl = "", $userdb = "") {
if ($vtpl == "") {
global $tpl; // 外部定義されたデータベース接続
$this->tpl =& $tpl;
} else {
tpl = $vtpl; }
if ($userdb == "") {
global $db; // 外部定義されたデータベース接続
$this->db =& $db;
} else {
$this-> ;db = $userdb; : true /false、成功/失敗
** 作成者: Yue Xinming
** 作成時刻: 2005-8-30 10:24
*/
function savetodb() {
if ($ this->Name == "") {
return false;
}
if ($this->id) {
$strSQL = sprintf("UPDATE user SET Name= '% s '、password ='%s '"$ this-> password、
$ this-> id
else {
$strSQL = sprintf("INSERT user (Name, Password) "
"VALUES ('%s', '%s')",
$this->Name,
, >query($strSQL)) {
return true;
} else {
return false; ; ** 戻り値: true/false、成功/失敗
**明
** 作成時刻: 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'",
$this->id
);
} else if ($this ->Name != "") {
$strSQL = sprintf("SELECT * FROM user WHERE Name='%s'",
$this->Name
);
} else {
return false;
}
$this->db- >query($strSQL);
if ($this->db->next_record()) { $ this-& gt; (ID ");else {
return false;
}
}

/*
** 機能: データベースからレコードを削除
** パラメータの説明: $id、レコード番号
** 戻り値: true/false、成功/失敗
** 作成者: Yue Xinming
** 作成時刻: 2005-8-30 10:47
*/
function delete( $id = 0) {
if (is_array($id)) { //複数のレコードを同時に削除
foreach($id as $i) {
$strSQL = sprintf("DELETE F ROM ユーザー WHERE id='%s'", $i);
} else if ($ ID) { $ Strsql = Sprintf ("ID = '%s' のユーザーから削除", $ ID) ;
} else if ($ this-& gt; id) {
$ strsql = sprintf ("DELETE FROM user WHERE id='%s'", $this->id); else { t; クエリ ($strSQL);
を返します。

/*
** 機能: ログインインターフェイスを表示します
** パラメータの説明: $placeholder、表示位置
** 戻り値: なし
** 作成者: Yue Xinming
** 作成時刻: 2005-8-30 11:00
*/
function showLogin($placeholder) {
$this->tpl->addBlockfile($placeholder, " user_showLogin ",
"tpl.user_showLogin.html"
"tpl.user_showLogin.html" );
$this->t pl->setCurrentBlock("user_showLogin");
$this- >tpl->setVariable (array("user_Logintitle" => "ユーザー ログイン", "strUsername" => "ユーザー名",
"strPassword" => "パスワード"
) 🎜> $ this->tpl->parseCurrentBlock("user_showLogin");プレースホルダー、表示位置
** 戻り値: true/false、成功/失敗
** 作成者: Yue Xinming
** 作成時間: 2005-8-30 11:12
*/
function getLogin($placeholder = "") {
if (isset($_POST["login"])) {
if ($ _POST ["username"] == ""){
if($ placeholder!= "")sur");
$this->getfromdb();
if ($this ->Password() == $_POST["password"]) {
trueを返す;プレースホルダー != " ") {
$this->tpl->setVarable($placeholder, "ログインに失敗しました!"); }

/*
** 機能: 登録インターフェースの表示
* * パラメータの説明: $placeholder、表示位置
** 戻り値: なし
** 作成者: Yue Xinming
** 作成時刻:2005-8-30 13:33
*/
function showRegister($placeholder) {
$this->tpl->addBlockfile($placeholder, "user_showRegister",
"tpl .user_showRegister.html"
... this->parseCurrentBlock ("user_shoRegister");
}

/*
** 機能:登録情報処理
** パラメータ説明:$placeholder、表示位置
** 戻り値:true /false、登録成功/登録失敗
** 作成者: Yue Xinming
** 作成時刻: 2005-8-30 15:49
*/
function getRegister ($placeholder = "") {
if (isset($_POST["register")) {
if ($_POST["username"] == "") { // ユーザー名の有効性チェック、他のチェック方法に変更可能
If ($placeholder != "") { // エラー メッセージ
$this->tpl->setVariable($placeholder, "ユーザー名は不正です!"); ) { // パスワードの有効性チェック
($ Placeholder! = "") {// エラー プロンプト
$ This-& GTL-& GT;矛盾しています!");

return false;

$strSQL = sprintf("SELECT COUNT(*) FROMユーザー 「
. 「WHERE Name='%s'」 ,
$this->名前
);
$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->db->query($strSQL);
return true;
else {
return false;
}
}
}// クラスの終わり ユーザー定義

/*
** 目的: ユーザー システム データ リストの抽象化
** 著者: Yue Xinming
** 時間: 2005-8-30 17: 21
*/
クラス UserList {
var $page = 0;
var $pagesize = 9; > var $Users = array();

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

$strSQL = sprintf("SELECT COUNT(*) FROM user WHERE '%s'",
$this->condition
); 
$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-> ;page * $this->pagesize,
$this->pagesize 1
); 
$this->db->query($strSQL); 
for ($i = 0; $this->db->next_record(); $i ) {
$this->Users[$i] = new User($this->tpl , $this->db); 
$this->Users[$i]->id = $this->db->f("id"); 
$this->Users[$i]->Name = $this->db->f("Name"); 
$this->Users[$i]->Password = $this->db->f("パスワード"); 
}
}


/*
** 機能:リスト表示
** パラメータ説明:$placeholder、表示位置
** 戻り値:なし
** 作成者:Yue Xinming
** 作成時刻: 2005-8-31 9:16
*/
function showUserList($placeholder) {
$this->tpl->addBlockfile($placeholder) , "showUserList", "tpl.showUserList.html");
$this->tpl->setCurrentBlock("showUserList")
// ここに対応する処理コードを追加します
$this -> ;tpl->setVariable("strTitle", "ユーザーリスト");
$strTitles = array("ユーザー名", "操作");
$RecordOperations = array("パスワードのリセット" => " opera=passwd&id=,
の $this->tpl->setCurrentBlock("showRecordsTitle"); 🎜> $this->tpl->setVariable("strHead", $title);
$this-> ;tpl ->parseCurrentBlock("showRecordsTitle"); foreach ($ this->Users as $ user) {
$this->tpl->setCurrentBlock("showRecords");
$this->tpl->setCurrentBlock("showCell"); ->setVariable("strCell", $user); tpl->setCurrentBlock("showCell"); $this->tpl->setVariable("strOperation", $operation); id);
$this->tpl->parseCurrentBlock("showOperations"); 
$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" => $this->recordsum,
「intPage」 => ; $this->page,
"intPages" =>pages
)
); 
$this->tpl->parseCurrentBlock("showPageInfo"); 
$this->tpl->parseCurrentBlock("showUserList"); 
}
}
?>  


HTML 代コード:


[Ctrl A 全选注:如需要取入外部Js必要刷新才能执行]

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

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:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

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

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

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

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

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

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

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

See all articles