
批改狀態(tài):合格
老師批語:看來記住了, 就差實(shí)戰(zhàn)了
1.抽象類與抽象方法
abstract
:在類/方法最前面加上,則叫抽象類/抽象方法2.接口
interface 接口名
implements
實(shí)現(xiàn):class 類名 implements 接口名
1.建立數(shù)據(jù)庫配置文件:`config.php
<?php
//主機(jī)地址
define("DB_HOST","localhost");
//數(shù)據(jù)庫用戶名
define("DB_USER","root");
//數(shù)據(jù)庫密碼
define("DB_PASSWORD","root123");
// 數(shù)據(jù)庫型號(hào)
define("DB_TYPE","mysql");
// 數(shù)據(jù)庫名稱
define("DB_NAME","my_user");
//數(shù)據(jù)庫編碼
define('DB_CHARSET', 'utf8');
//數(shù)據(jù)庫端口號(hào)
define('DB_PORT', '3306');
//定義PDO的DSN,數(shù)據(jù)源名,包括主機(jī)名,端口號(hào)和數(shù)據(jù)庫名稱。
define('DSN', DB_TYPE.":host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET);
`
2.演示文件:index.php
<?php
//接口
interface iDbset
{
// 抽象方法
//新增
public static function insert($db,$data);
//查詢
public static function select($db,$opt=[]);
//修改
public static function update($db,$opt=[]);
//刪除
public static function delete($db,$where);
}
//實(shí)現(xiàn)類使用抽象類來充當(dāng):中間類
abstract class aDb implements iDbset
{
//初始化連接
// 使用單例模式連接: 創(chuàng)建類的唯一實(shí)例,唯一對(duì)象
protected static $db =null;
// 抽象類充當(dāng)接口實(shí)現(xiàn)類時(shí), 不用必須實(shí)現(xiàn)接口中的抽象方法
// 當(dāng)實(shí)現(xiàn)類中的方法中有一些公共操作時(shí),可以將這些操作放在中間的抽象類中實(shí)現(xiàn)它
public static function connet($db,$username,$password)
{
//判斷是否連接數(shù)據(jù)庫
if(is_null(self::$db)){
return self::$db = new PDO($db,$username,$password);
}
return self::$db;
}
}
//實(shí)現(xiàn)類
class DB extends aDb
{
// //新增
public static function insert($db,$data){
$sql =" INSERT `mu_user` SET `username`=?,`password`=?,`phone`=?";
$stem = $db->prepare($sql);
$stem ->bindParam(1,$data['username']);
$stem ->bindParam(2,$data['password']);
$stem ->bindParam(3,$data['phone']);
// var_dump($data['table']);
$stem->execute();
if($stem->rowCount()){
return "新增:".$stem->rowCount()."條";
}else{
// return "errorInfo :".$stem->errorInfo();
return "新增失敗";
}
}
//查詢
public static function select($db,$opt=[]){
$sql = "SELECT * FROM `mu_user` WHERE `id`<?";
$stem = $db->prepare($sql);
$id =10;
$stem ->bindParam(1,$id);
$stem->execute();
if($stem->rowCount()){
return $stem ->fetchAll (PDO::FETCH_ASSOC);
}else{
return "未查詢到數(shù)據(jù)";
}
}
//修改
public static function update($db,$opt=[]){
$sql =" UPDATE `mu_user` SET `username`=?,`phone`=? WHERE `id`=?";
$stem = $db->prepare($sql);
$stem ->bindParam(1,$opt['username']);
$stem ->bindParam(2,$opt['phone']);
$stem ->bindParam(3,$opt['id']);
$stem->execute();
if($stem->rowCount()){
return "修改:".$stem->rowCount()."條";
}else{
// return "errorInfo :".$stem->errorInfo();
return "修改失敗";
}
}
//刪除
public static function delete($db,$where){
$sql =" DELETE FROM `mu_user` WHERE `id`=?";
$stem = $db->prepare($sql);
$stem ->bindParam(1,$where);
$stem->execute();
if($stem->rowCount()){
return "刪除:".$stem->rowCount()."條";
}else{
// return "errorInfo :".$stem->errorInfo();
return "刪除失敗";
}
}
}
//客戶端
require "./config.php";
//數(shù)據(jù)連接
$db = DB::connet(DSN,DB_USER,DB_PASSWORD);
//新增數(shù)據(jù)
$data=[
'table'=>'my_user',
'username'=>'天性健',
'password'=>md5(654321),
'phone'=>'7256868632'
];
echo DB::insert($db,$data);
echo "<hr>";
//查詢
foreach(DB::select($db) as $arr){
echo "ID:".$arr['id'].",姓名:".$arr['username'].",電話:".$arr['phone']."<br>";
}
echo "<hr>";
//編輯id
$data=[
'id'=>18,
'username'=>'大黃蜂',
'phone'=>'11111111'
];
echo DB::update($db,$data);
echo "<hr>";
//刪除
echo DB::delete($db,21);
echo "<hr>";
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)