Pemetaan Perhubungan Objek (ORM) ialah corak reka bentuk penting dalam pembangunan perisian moden. Idea teras corak ORM adalah untuk memetakan objek dalam program ke jadual dalam pangkalan data hubungan, dengan itu mencapai integrasi yang lancar antara program dan pangkalan data. Pelaksanaan corak ORM boleh menggunakan rangka kerja ORM sedia ada, seperti Hibernate, Django ORM dan Active Record dalam Ruby on Rails. Walau bagaimanapun, dalam PHP, kita boleh menggunakan kod PHP asli untuk melaksanakan lapisan kegigihan objek tanpa memerlukan rangka kerja tambahan. Artikel ini akan memperkenalkan cara untuk melaksanakan lapisan kegigihan objek menggunakan kod PHP asli.
1. Asas pangkalan data hubungan
Sebelum memahami cara menggunakan PHP untuk melaksanakan lapisan kegigihan objek, kita perlu terlebih dahulu memahami beberapa konsep asas dalam pangkalan data hubungan.
1. Jadual pangkalan data
Pangkalan data relasi terdiri daripada banyak jadual data. Setiap jadual data terdiri daripada satu atau lebih lajur. Setiap lajur mempunyai jenis data yang sepadan, seperti integer, rentetan, tarikh, dsb.
2. Kunci utama
Setiap jadual data perlu mempunyai kunci utama, iaitu medan yang mengenal pasti setiap rekod dalam jadual secara unik. Kunci utama mestilah unik dan tidak boleh NULL.
3. Kekunci asing
Kunci asing digunakan untuk mewujudkan hubungan antara dua atau lebih jadual. Kekunci asing mentakrifkan perkaitan antara satu jadual dengan jadual lain, membolehkan kami mendapatkan maklumat daripada dua jadual dan menggabungkannya melalui pertanyaan bersama.
2. Gunakan PDO untuk mengakses pangkalan data
PDO (Objek Data PHP) ialah cara standard untuk mengakses pangkalan data dalam PHP. Kita boleh menggunakan PDO untuk mengakses pelbagai pangkalan data hubungan (seperti MySQL, PostgreSQL, dsb.) . Menggunakan PDO untuk mengendalikan pangkalan data boleh meningkatkan kemudahalihan program dan meningkatkan keselamatan program.
Dalam PHP, kita boleh menggunakan kelas PDO untuk memulakan sambungan pangkalan data. Antaranya, parameter yang perlu disediakan oleh pengguna termasuk jenis pangkalan data, nama hos, nama pangkalan data, nama pengguna dan kata laluan, dsb. Selepas permulaan, kita boleh menggunakan contoh PDO untuk melaksanakan pertanyaan SQL dan memproses keputusan pertanyaan.
Berikut ialah contoh penggunaan PDO untuk mengakses pangkalan data MySQL:
<?php try { $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); foreach($dbh->query('SELECT * from FOO') as $row) { print_r($row); } $dbh = null; } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br/>"; die(); } ?>
Melaksanakan kod di atas akan memilih jadual FOO dalam MySQL dan mencetak hasil pertanyaan.
3. Gunakan PHP untuk melaksanakan mod ORM
Apabila melaksanakan mod ORM, kita perlu menggunakan objek dan kelas PHP untuk menerangkan jadual dan lajur dalam pangkalan data. Kita perlu menentukan kelas yang sepadan untuk setiap jadual dan menukar lajur dalam jadual kepada atribut kelas. Untuk melaksanakan mod ORM, kami juga perlu memperkenalkan lapisan capaian pangkalan data untuk mengendalikan pangkalan data dan menukar hasil pertanyaan kepada objek kelas PHP. Berikut adalah langkah pembangunan untuk melaksanakan mod ORM menggunakan PHP:
1 Cipta sambungan pangkalan data MySQL
Dalam PHP, kita boleh menggunakan PDO untuk menyambung ke pangkalan data MySQL. Berikut ialah contoh kod untuk membuka sambungan pangkalan data MySQL:
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDBPDO"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully"; } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); } ?>
Dalam kod di atas, kami membuat sambungan ke pangkalan data MySQL dan menetapkan mod ralat PDO kepada mod pengecualian. Apabila menggunakan PDO, mod pengecualian membolehkan kami mengendalikan ralat yang mungkin berlaku dalam program dengan lebih mudah.
2. Tentukan kelas ORM
Untuk melaksanakan mod ORM, kita perlu mentakrifkan kelas ORM yang sepadan dengan jadual dan menukar lajur dalam jadual kepada atribut kelas. Berikut ialah contoh kod untuk kelas ORM:
<?php class User { private $id; private $name; private $email; private $password; public function __construct($id, $name, $email, $password) { $this->id = $id; $this->name = $name; $this->email = $email; $this->password = $password; } public function getId() { return $this->id; } public function setId($id) { $this->id = $id; } public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } public function getEmail() { return $this->email; } public function setEmail($email) { $this->email = $email; } public function getPassword() { return $this->password; } public function setPassword($password) { $this->password = $password; } } ?>
Dalam kod di atas, kami mencipta kelas Pengguna dan menukar lajur id, nama, e-mel dan kata laluan dalam jadual kepada atribut kelas . Kami juga mentakrifkan pembina kelas dan satu siri kaedah getter dan setter.
3. Laksanakan lapisan akses data ORM
Untuk melaksanakan mod ORM, kami juga perlu melaksanakan lapisan akses data untuk mengendalikan pangkalan data. Berikut ialah kod sampel lapisan akses data ringkas:
<?php class UserDAO { private $pdo; public function __construct(PDO $pdo) { $this->pdo = $pdo; } public function getUserById($id) { $stmt = $this->pdo->prepare('SELECT * FROM user WHERE id = :id'); $stmt->execute(array('id' => $id)); $data = $stmt->fetch(); if ($data) { return new User($data['id'], $data['name'], $data['email'], $data['password']); }else{ return null; } } public function saveUser(User $user) { if ($user->getId()) { // update $stmt = $this->pdo->prepare('UPDATE user SET name = :name, email = :email, password = :password WHERE id = :id'); $stmt->execute(array('name' => $user->getName(), 'email' => $user->getEmail(), 'password' => $user->getPassword(), 'id' => $user->getId())); } else { // insert $stmt = $this->pdo->prepare('INSERT INTO user (name, email, password) VALUES (:name, :email, :password)'); $stmt->execute(array('name' => $user->getName(), 'email' => $user->getEmail(), 'password' => $user->getPassword())); $user->setId($this->pdo->lastInsertId()); } } public function deleteUser(User $user) { $stmt = $this->pdo->prepare('DELETE FROM user WHERE id = :id'); $stmt->execute(array('id' => $user->getId())); } } ?>
Dalam kod di atas, kami mencipta kelas UserDAO, yang digunakan untuk mengendalikan pangkalan data dan mengembalikan objek Pengguna. Kaedah getUserById dalam kelas ini mendapatkan maklumat pengguna dengan id yang ditentukan daripada pangkalan data, kaedah saveUser mengemas kini atau memasukkan maklumat pengguna ke dalam pangkalan data dan kaedah deleteUser digunakan untuk memadam maklumat pengguna.
4. Gunakan kelas ORM
Selepas melaksanakan mod ORM, kita boleh menggunakan objek ORM seperti objek biasa tanpa menulis sebarang pertanyaan SQL secara manual. Di bawah ialah contoh kod untuk kelas ORM:
<?php // create a new user $user = new User(null, 'John Doe', 'john@example.com', 'password'); $userDAO = new UserDAO($pdo); $userDAO->saveUser($user); // find a user by id $user = $userDAO->getUserById(1); // update a user's name $user->setName('Jane Doe'); $userDAO->saveUser($user); // delete a user $userDAO->deleteUser($user); ?>
Dalam kod di atas, kami mencipta pengguna baharu dan memasukkan pengguna ke dalam pangkalan data. Kemudian, kami menggunakan kaedah getUserById untuk mencari maklumat pengguna dengan ID 1. Kami boleh mengemas kini nama pengguna itu menggunakan kaedah setter dan kemudian menyimpan perubahan pada pangkalan data menggunakan kaedah saveUser. Akhir sekali, kami memadam pengguna menggunakan kaedah deleteUser.
Kesimpulan
Dalam artikel ini, kami memperkenalkan cara untuk melaksanakan corak lapisan kegigihan objek menggunakan PHP. Mula-mula, kami mempelajari asas pangkalan data hubungan, dan kemudian melihat dengan lebih mendalam tentang penggunaan PHP PDO untuk menyambung ke pangkalan data. Dengan memahami pangkalan data hubungan dan kaedah sambungan PDO, kami boleh melaksanakan sendiri mod ORM secara manual. Dengan mentakrifkan kelas ORM dan lapisan akses data, kami boleh menyepadukan operasi pangkalan data dengan lancar ke dalam kod PHP kami. Penggunaan mod ORM boleh memudahkan kod kami ke tahap yang besar dan mengendalikan operasi pangkalan data dengan lebih mudah.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan lapisan kegigihan objek dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!