PHP melaksanakan pemacu MongoDB sumber terbuka

WBOY
Lepaskan: 2023-06-18 10:32:02
asal
1097 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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");
Salin selepas log masuk

Dalam contoh di atas, kami menggunakan perpustakaan PHP rasmi MongoDB mongodb/mongodb untuk membuat sambungan ke contoh MongoDB dan memilih testPangkalan 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);
    }
}
Salin selepas log masuk

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);
    }
}
Salin selepas log masuk

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']}岁";
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan