PHP 抽象クラスの使用と定義
抽象クラス A {
パブリック $name;
関数 fun(){
echo $this->name;
}
抽象関数 cc($n,$nn=3);
}
クラス B は A を拡張します{
関数 cc($m,$mm=7){
echo "aaa";
}
}
$b = 新しい B;
?>
PHP はオブジェクト指向であり、インターフェイスは
を使用して定義されます。
インターフェース in_a{
const NA=7;
const NB=9;
関数 fun();
関数 fun2();
}
インターフェイス in_b{
関数 fun3();
}
クラス B{
関数 cc(){
}
}
クラス A は B を拡張し、in_a,in_b{
を実装します関数 fun(){
}
関数 fun2(){
}
関数 fun3(){
}
}
$p=新しいA;
?>
2 つの例:
抽象クラスの例:
抽象クラス mysql{
パブリック $host;//ホスト アドレス
public $user;//ユーザー名
パブリック $passwd;
パブリック $dbname;
パブリック $charset;
function __construct($h,$u,$p,$d,$c){
$this->host=$h;
$this->user=$u;
$this->passwd=$p;
$this->dbname=$d;
$this->charset=$c;
$this->conn();
}
関数 conn(){
@mysql_connect($this->host,$this->user,$this->passwd) または die ("mysql 接続に失敗しました");
@mysql_select_db($this->dbname) または die("データベース接続に失敗しました");
$this->q("セット名 '".$this->charset."'");
}
関数 q($n){
return mysql_query($n);
}
関数 id(){
return mysql_insert_id();
}
関数 f($n,$st=1){
スイッチ($st){
ケース 1 :
$rs=mysql_fetch_array($n);
休憩;
ケース 2 :
$rs=mysql_fetch_row($n);
休憩;
}
$rs を返します;
}
//========================
/**
*説明: データベースへの挿入方法
*パラメータ: $tb テーブル名、$val は挿入された値を表します、$st デバッグ モード、1 デバッグ 0 非デバッグ
*戻り値: int
*/
抽象関数 into($tb,$val,$st=0);
/**
*説明: sel_once クエリ
*パラメータ:
$tb テーブル名、
$wh 条件のデフォルトは 1、
$ar,
で指定されたフィールド$ty クエリ タイプ、デフォルトの添え字とキー名、
$st デバッグ ステータス、デフォルトは 0、1 はデバッグ中、0 はデバッグ中でない
*戻り値: 配列 [1 次元配列]
*/
抽象関数 sel_once($tb,$wh=1,$ar="*",$ty=1,$st=0);
/**
*説明: sel_all クエリ
*パラメータ:
$tb テーブル名、
$wh 条件のデフォルトは 1、
$ar,
で指定されたフィールド$ty クエリ タイプ、デフォルトの添え字とキー名、
$st デバッグ ステータス、デフォルトは 0、1 はデバッグ中、0 はデバッグ中でない
*戻り値: 配列 [2次元配列]
*/
抽象関数 sel_all($tb,$wh=1,$ar="*",$ty=1,$st=0);
/**
*説明: データベースを更新するための update メソッド
*パラメータ:
$tb テーブル名、
$val コンテンツ更新
$wh 条件 [1 制限 1]、
$st デバッグ モードのデフォルトは 0、1 はデバッグ、0 はデバッグしない
*戻り値: int
*/
抽象関数 update($tb,$val,$wh="1 制限 1",$st=0);
/**
*説明: del deleteデータベースメソッド
*パラメータ:
$tb テーブル名、
$wh 条件 [1 制限 1]、
$st デバッグ モードのデフォルトは 0、1 はデバッグ、0 はデバッグしない
*戻り値: int
*/
抽象関数 del($tb,$wh="1 制限 1",$st=0);
}
?>
インターフェース学習の例:
インターフェース in_a{
/**
説明: ログインメソッドlogin
パラメータ: $user ユーザー名、$passwd パスワード
戻り値: bool [Cookie を生成]
*/
関数ログイン($user,$passwd);
}
インターフェイス in_b{
/**
説明: checkLogin ログインをチェック
パラメータ: $n ユーザーのデフォルト権限 1 は、異なるページのユーザーに異なる権限を指定できます
戻り値: bool
*/
関数 checkLogin($n=1);
}
インターフェイス in_c{
/**
説明: checkLoginTime は、ログインがタイムアウトしたかどうかを確認します
パラメータ: $n はタイムアウト時間で、デフォルトは 3600 秒です
戻り値: bool
*/
function checkLoginTime($n=3600);
}
//質問 1 の要件: ログイン ページでは in_a in_b インターフェイスの使用が必要です
//質問 2 の要件: ログイン後、ページでは in_b in_c インターフェイスの使用が必要です
?>