PHP 函數可實現業務邏輯與資料存取的分離,透過將資料存取程式碼封裝在函數中,從而提升程式碼的可重複使用性、可維護性、可測試性和程式碼分離度。
PHP 函數在業務邏輯與資料存取分離中的作用
業務邏輯與資料存取分離是常見的軟體設計模式,它將程式的業務邏輯程式碼與與資料來源互動的程式碼分開。這種分離可以提升程式碼的可重複使用性和可維護性。
在 PHP 中,可以使用函數來實現業務邏輯與資料存取的分離。透過將資料存取程式碼封裝在函數中,可以將這些程式碼與其他業務邏輯隔離。
實戰案例
下面是一個實戰案例,示範如何使用PHP 函數實現業務邏輯與資料存取分離:
Database. php
class Database { private $host; private $user; private $password; private $database; private $connection; public function __construct($host, $user, $password, $database) { $this->host = $host; $this->user = $user; $this->password = $password; $this->database = $database; $this->connect(); } private function connect() { $this->connection = new PDO("mysql:host=$this->host;dbname=$this->database", $this->user, $this->password); } public function executeQuery($sql) { $statement = $this->connection->prepare($sql); $statement->execute(); return $statement->fetchAll(PDO::FETCH_ASSOC); } }
UserModel.php
class UserModel { private $database; public function __construct(Database $database) { $this->database = $database; } public function getAllUsers() { $sql = "SELECT * FROM users"; return $this->database->executeQuery($sql); } public function getUserById($id) { $sql = "SELECT * FROM users WHERE id = :id"; $statement = $this->database->connection->prepare($sql); $statement->bindParam(":id", $id); $statement->execute(); return $statement->fetch(PDO::FETCH_ASSOC); } }
UserController.php
class UserController { private $userModel; public function __construct(UserModel $userModel) { $this->userModel = $userModel; } public function index() { $users = $this->userModel->getAllUsers(); return view('index', ['users' => $users]); } public function show($id) { $user = $this->userModel->getUserById($id); return view('show', ['user' => $user]); } }
#routes.php
use App\Http\Controllers\UserController; Route::get('/', [UserController::class, 'index']); Route::get('/users/{id}', [UserController::class, 'show']);
業務邏輯與資料存取分離的好處
使用PHP 函數實現業務邏輯與資料存取分離具有以下好處:
以上是PHP 函數在業務邏輯與資料存取分離中的作用的詳細內容。更多資訊請關注PHP中文網其他相關文章!