前書き
これが私にとって PHP との最初の接触です。機能要件は非常に単純です。Web インターフェイスの提供、データの受信、データベースとの対話、そして最終的に XML 結果への応答を担当します。その過程で、データベース上での PDO の操作、XML 操作、オブジェクト指向、正規表現、出力と出力など、PHP の多くの一般的な構文と機能に触れました。基本的には、インターネットでサンプルを検索し、手探りで自分でコードを書きました。私は N 年間 .Net を書いてきたため、プロジェクトのプロセスでは .Net に多大な影響を受けました。 CodeBehind のクラスごとに同様のコードを作成しましたが、PHP の開発フレームワークを理解する時間がなく、完全に自分の考えに従ってプロジェクトを構築しました。今後の参考のためにこのエッセイに記録しておきますので、PHP の専門家からのアドバイスもいただければ幸いです。
DAL
元々は DBUtility クラスをカプセル化したかったのですが、PDO を完全に理解して数日で自由に適用することができなかったので、データベース関連の操作を DAL に混ぜる必要がありました。
コード
php
/* ************************************** **********************
DAL
wjian 2010-01-19
****************** ****** **************************************** */
定義 ( " DB_BASIC " , " mysql
define ( " DB_USER " , " root " );
define ( " DB_PSWD " , " root " ); / コンストラクター public function __construct() $ this -> pdo = 新しい PDO(DB_BASIC, db_user、$ cmd; if($ arr [0] [0] == 1)
{
} elth {
、group id、email、name、nemarks) , $name, $desc)
t; prepare("INSERT INTO extensionemail (`etn`, `grp_id`, `email`, `nm`, `desc`) VALUES (:a, :b, :c, :d) , :e)");
$stmt ->bindParam(':a', $etn);
$stmt->bindParam(':b', $grpid);
$stmt->bindParam(':c', $email);
$stmt->bindParam(':d', $name);
$stmt->bindParam(':e', $desc);
$stmt->execute();
*/
/* 実行方式 */
$this -> pdo = 新しい PDO(DB_BASIC , DB_USER , DB_PSWD);
$cmd = " INSERT INTO extension_email (`etn`, `grp_id`, `email`, `nm`, `desc`) VALUES (' " . $etn . " ', " . $grpid . " , ' " . $email . " ',' " . $desc ;
$s = $this -> pdo ->実行 ( $cmd );
$this -> pdo = null ;
if ( $s == 1 ){
return true ;
}
else {
return false ;
}
}
// 更新分机(分机番号、分组ID、EMAIL、名前、备注)
public function ExtensionEdit( $etn , $grpid , $email , $name , $desc )
{
$this -> ; pdo = 新しい PDO(DB_BASIC , DB_USER , DB_PSWD);
$cmd = " UPDATE extension_email SET `grp_id` = " . $grpid 。 " , `メール` = ' " 。 $email . 「 ', `nm` = ' 」 。 $name 。 " ',`desc` = ' " 。 $desc 。 「 ' WHERE `etn` = 」 。 $etn ;
$s = $this -> pdo ->実行 ( $cmd );
$this -> pdo = null ;
if ( $s == 1 ){
return true ;
}
else {
return false ;
}
}
// 激活分机
public function ExtensionAct( $etn , $state )
{
$this -> pdo = 新しい PDO(DB_BASIC , DB_USER , DB_PSWD);
$cmd = " UPDATE extension_email SET `state` = " . $state 。 " , `reg_time` = CURRENT_TIMESTAMP() WHERE `etn` = " . $etn ;
$s = $this -> pdo ->実行 ( $cmd );
$this -> pdo = null ;
if ( $s == 1 ){
return true ;
}
else {
return false ;
}
}
// 分机列表
public function ExtensionList( $grpid )
{
$this -> pdo = 新しい PDO(DB_BASIC , DB_USER , DB_PSWD);
$cmd = " SELECT * FROM extension_email WHERE `grp_id` = " . $grpid ;
if ( $grpid == 0 )
{
$cmd = " SELECT * FROM extension_email " ;
}
$rs = $this -> pdo ->クエリ( $cmd );
$arr = $rs -> fetchAll();
$this -> pdo = null ;
return $arr ;
}
// 分组列表
public function GroupList()
{
$this -> pdo = 新しい PDO(DB_BASIC , DB_USER , DB_PSWD);
$cmd = " SELECT * FROM extension_group " ;
$rs = $this -> pdo ->クエリ( $cmd );
$arr = $rs -> fetchAll();
$this -> pdo = null ;
return $arr ;
}
}
?>
BLL
业务层调用DAL,并のためにUI提供服务
コード
php
/* ************************************* **********************
BLL
ウー・ジャン 2010-01-19
***************** ******* ****************************************** * /「dal.php」を必要とします} // グループが存在するかどうかを判断します
public function GroupExist( $grpid ) {
return $this -> GroupExist( $grpid );
public function ExtensionExist( $etn ) {
これ -& gt; mydal - > IL、名前、備考) b Public Function ExtensionEdit ($ etn, $ GRPID, $ Email, $ Name, $ Desc) {
Return $ This -& GT; desc);
UI
PHPにはCodeBehind関連付けのようなイベントやページコントロールはありませんが、クラスとページの間にオブジェクトの継承関係はありませんが、それでもロジックを分離した方が明確になると思います。 .Net を長期間使用しているため、ページにロジック コードを埋め込むのは好きではありません。
extension_add.php
php
"extension_add.class.php" が必要です
extension_edit.class.php
コード
php
/* ************************************* ************************
拡張機能を追加
Wu Jian 2010-01-19
************** **** ******************************************* */
// パブリッククラスをロードします
require " class/common.php " ;
// ビジネスクラスをロードします
require " class/bll.php " ;
class ExtensionAdd
{
// ページの初期化
静的関数 pageLoad()
9 ; new DOMDocument(); $root = simplexml_import_dom ($doc)
ルート -> ヘッド -> guidID; -> 拡張子;
_name = $ root->在 // パケットの有無 分 ($ Mybll -& GT; ExtensionExist ($ the_extExSION) {
$ result = 3;
} {
// パケットの有無 ($ mybll -& gt; groupexi ST ( $ the_groupid))_name、$ the_desc)
0;}
$result = 2;間違っています
xml = " " ; $xml = $xml . "
コード
php
/* ************************************** ************************
拡張機能リスト
Wu Jian 2010-01-19
************** **** ******************************************* */
// ビジネスクラスをロードします
require " class/bll.php " ;
define ( " AUTH_KEY " , " test " );
class ExtensionList
{
// ページの初期化
static function pageLoad()
{ " ;
// 0:成功1:キーは無効です2:提出されたデータ形式は間違っています3:グループは存在しません。 s 't、)$ _post ["data"); ETN $etn = $etn . 「<メール>」 。 $row["電子メール"] 。 " " ;
$etn = $etn 。 " <名前> " 。 $row["nm"] 。 " " ;
$etn = $etn 。 "
$etn = $etn 。 "
$etn = $etn 。 "
$etn = $etn 。 " " ;
{ //
}
$xml = " " ;
$xml = $xml . " <出力> " ;
$xml = $xml . "
主要应用了正则表达式
コード
php
/* ************************************* *********************
Public
Wu Jian 2010-01-19
****************** ****** ****************************************** */ Class common {
/ / non-null null visification
$ strは、$ strの使用を使用して使用を使用して「s」を使用して使用を使用して - - −----
";静的[A-Za-Z0-9] {2,4})? $ ";
if (EREG ($ Reg, $ Str))
{
Return True;
}
{
Return false; }
}
?>