MongoDB ialah pangkalan data bukan perhubungan yang sangat popular hari ini. Ciri ketersediaannya yang tinggi seperti sokongan untuk replikasi dan serpihan automatik telah menjadikannya teknologi pilihan bagi banyak syarikat. PHP adalah bahasa pengaturcaraan yang sangat popular dan salah satu bahasa arus perdana untuk membangunkan aplikasi web. Walau bagaimanapun, sambungan MongoDB yang disediakan secara rasmi jelas tidak dapat memenuhi keperluan pembangun, terutamanya dari segi prestasi dan kemudahan penggunaan, dan tidak dapat memenuhi keperluan pemandu dengan keperluan yang berbeza. Untuk memenuhi keperluan pembangun, beberapa pembangun bebas telah menyediakan pemacu MongoDB mereka sendiri.
Oleh itu, kami memerlukan sumber terbuka dan pemacu MongoDB yang mudah digunakan. Dalam artikel ini, kita akan melihat cara untuk melaksanakan pemacu MongoDB sedemikian.
Langkah 1: Pasang sambungan MongoDB dan konfigurasikan MongoDB
Sebelum menggunakan MongoDB, anda perlu memasang sambungan MongoDB dan MongoDB. Sambungan MongoDB boleh dipasang melalui:
pecl install mongodb
Selain itu, untuk menggunakan MongoDB, anda juga perlu mengkonfigurasi tika MongoDB. Dalam persekitaran setempat, anda boleh memulakan contoh MongoDB dengan menggunakan bekas Docker. Berikut ialah contoh memasang dan menjalankan bekas MongoDB Docker secara tempatan:
docker run -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=mongodb -e MONGO_INITDB_ROOT_PASSWORD=password --name mongodb mongo
Perintah di atas akan memulakan bekas MongoDB dalam persekitaran setempat dan port peta 27017 untuk membolehkan aplikasi PHP menyambung kepadanya. Selain itu, nama pengguna dan kata laluan yang dipanggil "mongodb" ditetapkan.
Langkah 2: Tulis pemacu MongoDB
Sekarang, mari tulis pemacu MongoDB. Pertama, kita perlu membuat sambungan ke contoh pangkalan data MongoDB. Berikut ialah contoh kod untuk mewujudkan sambungan dengan MongoDB dan memilih pangkalan data:
$client = new MongoDBClient("mongodb://mongodb:27017", [ "username" => "mongodb", "password" => "password" ]); $db = $client->selectDatabase("test");
Dalam contoh di atas, kami menggunakan perpustakaan PHP rasmi MongoDB mongodb/mongodb
untuk membuat sambungan ke contoh MongoDB dan memilih test
Pangkalan data.
Seterusnya, kita perlu melaksanakan beberapa fungsi kelas asas. Kita boleh mencipta kelas asas MongoDBConnection
dan mentakrifkan beberapa kaedah awam di dalamnya seperti berikut:
<?php namespace MyAppMongoDB; use MongoDBCollection; use MongoDBDatabase; class MongoDBConnection { protected Database $database; /** * 创建一个新的MongoDBConnection实例 */ public function __construct(Database $database) { $this->database = $database; } /** * 获取指定名称的集合 */ public function getCollection(string $name) : Collection { return $this->database->selectCollection($name); } }
Seperti di atas, kami telah mentakrifkan kaedah getCollection($name)
untuk mendapatkan koleksi dengan nama yang ditentukan.
Akhir sekali, kita perlu mencipta subkelas berbeza yang memanjangkan kelas asas. Contohnya, jika anda ingin mengakses koleksi MongoDB bernama "pengguna", anda boleh mencipta subkelas bernama "UserRepository", mewarisi daripada MongoDBConnection
dan kemudian melaksanakan pelbagai kaedah UserRepository
.
<?php namespace MyAppMongoDB; use MongoDBCollection; class UserRepository extends MongoDBConnection { /** * 获取所有用户 */ public function getAllUsers() : array { $collection = $this->getCollection("users"); $cursor = $collection->find(); return iterator_to_array($cursor); } /** * 根据id获取用户 */ public function getUserById(string $id) : ?array { $collection = $this->getCollection("users"); $document = $collection->findOne(["_id" => new MongoDBBSONObjectID($id)]); if(!$document) return null; return (array) $document; } /** * 保存用户 */ public function saveUser(array $data) : void { $collection = $this->getCollection("users"); $collection->insertOne($data); } }
Seperti yang ditunjukkan di atas, UserRepository
mewarisi kelas MongoDBConnection
dan melaksanakan kaedah getAllUsers()
, getUserById()
dan saveUser()
.
Langkah 3: Uji pemacu MongoDB
Akhir sekali, kita perlu menguji sama ada pemacu MongoDB boleh berfungsi dengan betul. Berikut ialah contoh kod yang menunjukkan contoh cara menggunakan kelas UserRepository
di atas:
$userRepo = new UserRepository($db); // 保存新用户 $userRepo->saveUser([ "name" => "小明", "age" => 24, "gender" => "male" ]); //获取所有用户 $users = $userRepo->getAllUsers(); foreach ($users as $user){ echo "用户名:{$user['name']}, 年龄:{$user['age']}<br />"; } // 根据id获取用户 $user = $userRepo->getUserById("5fb03aedaaaebd686541ea07"); echo "{$user['name']}, {$user['age']}岁";
Dalam coretan kod di atas, kami mula-mula mencipta pengguna dan kemudian mendapatkan semua pengguna menggunakan getAllUsers()
dan mendapatkan semua pengguna menggunakan Kaedah getUserById()
untuk mendapatkan maklumat pengguna berdasarkan id.
Ringkasan
Melalui langkah di atas, kami telah berjaya melaksanakan pemacu PHP yang boleh menyambung kepada kejadian data MongoDB dan menyediakan kaedah yang mudah digunakan. Ini adalah contoh mudah tetapi praktikal yang diharapkan memberi anda beberapa idea asas dan inspirasi. Sudah tentu, projek sebenar mungkin lebih kompleks, tetapi konsep dan struktur asas akan serupa.
Atas ialah kandungan terperinci PHP melaksanakan pemacu MongoDB sumber terbuka. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!