Bagaimana untuk mencipta pustaka fungsi PHP dan menjadikannya menyokong suntikan pergantungan?

WBOY
Lepaskan: 2024-04-26 13:15:01
asal
430 orang telah melayarinya

Cara mencipta pustaka fungsi PHP yang menyokong suntikan kebergantungan (DI): Cipta pakej Komposer sebagai pustaka fungsi. Laksanakan fungsi perpustakaan fungsi, seperti melaksanakan fungsi ucapan dalam fail. Pasang bekas PhpDI dan buat konfigurasi bekas, tambah kelas perpustakaan fungsi sebagai definisi kilang pada bekas. Gunakan perpustakaan dalam kod dan suntikan kebergantungan, seperti menggunakan bekas untuk mendapatkan contoh kelas perpustakaan. Dalam aplikasi praktikal, seperti menyimpan data pengguna ke pangkalan data, menyuntik sambungan pangkalan data untuk meningkatkan fleksibiliti.

如何创建 PHP 函数库并使其支持依赖项注入?

Cara mencipta pustaka fungsi PHP dan menjadikannya menyokong suntikan pergantungan

Pengenalan

Pustaka fungsi ialah alat yang berkuasa untuk penggunaan semula kod dalam PHP. Dengan menggunakan suntikan kebergantungan (DI), anda boleh menulis perpustakaan yang lebih fleksibel dan boleh diuji. Artikel ini akan menunjukkan kepada anda cara membuat dan menggunakan pustaka fungsi PHP yang didayakan DI.

Buat perpustakaan fungsi

Pertama, anda perlu mencipta pakej Komposer sebagai perpustakaan fungsi anda. Menggunakan pengurus pakej komposer, cipta pakej baharu dengan menjalankan arahan berikut:

composer init
Salin selepas log masuk

Isikan maklumat pakej dan kemudian jalankan arahan berikut untuk memasang autoloader Komposer:

composer install
Salin selepas log masuk

Sekarang, buat direktori baharu dalam projek anda untuk digunakan sebagai kod perpustakaan fungsi. Contohnya:

php
└── vendor
└── my-library
    └── src
        └── FunctionLibrary.php
Salin selepas log masuk

Laksanakan pustaka fungsi

Dalam FunctionLibrary.php, laksanakan fungsi pustaka. Contohnya: FunctionLibrary.php 中,实现函数库功能。例如:

namespace MyLibrary;

class FunctionLibrary
{
    public function greet(string $name): string
    {
        return "Hello, $name!";
    }
}
Salin selepas log masuk

配置依赖项注入

为了支持 DI,您需要使用一个容器来解决依赖项。本文将使用 PhpDI 容器。

在您的函数库包中安装 PhpDI:

composer require php-di/phpdi
Salin selepas log masuk

接下来,在 src/config.php

$containerBuilder = new \DI\ContainerBuilder();
$containerBuilder->addDefinitions([
    'MyLibrary\FunctionLibrary' => \DI\factory(function () {
        return new FunctionLibrary();
    })
]);

$container = $containerBuilder->build();
Salin selepas log masuk

Mengkonfigurasi Suntikan Ketergantungan

Untuk menyokong DI, anda perlu menggunakan bekas untuk menyelesaikan kebergantungan. Artikel ini akan menggunakan bekas PhpDI.

Pasang PhpDI dalam pakej perpustakaan anda:

use MyLibrary\FunctionLibrary;
use DI\Container;

$container = new Container();

$functionLibrary = $container->get(FunctionLibrary::class);

echo $functionLibrary->greet('John'); // 输出:Hello, John!
Salin selepas log masuk
Seterusnya, buat konfigurasi kontena dalam src/config.php:
namespace MyLibrary;

class UserRepository
{
    private $connection;

    public function __construct(\PDO $connection)
    {
        $this->connection = $connection;
    }

    public function persist(User $user): void
    {
        // 保存用户到数据库
    }
}
Salin selepas log masuk

Menggunakan perpustakaan

Sekarang, anda Anda boleh menggunakan perpustakaan anda dalam kod anda dan inject dependencies: 🎜
$containerBuilder->addDefinitions([
    \PDO::class => \DI\factory(function () {
        return new \PDO('mysql:host=localhost;dbname=my_database', 'username', 'password');
    }),
    'MyLibrary\UserRepository' => \DI\factory(function (Container $container) {
        return new UserRepository($container->get(\PDO::class));
    })
]);
Salin selepas log masuk
🎜🎜Contoh Praktikal🎜🎜🎜Andaikan anda mempunyai perpustakaan yang menyimpan data pengguna ke pangkalan data. Anda boleh menyuntik sambungan pangkalan data dalam suntikan kebergantungan, menjadikan pustaka anda lebih fleksibel dan boleh diuji: 🎜rrreee🎜 Kemudian, tambah definisi berikut dalam konfigurasi bekas: 🎜rrreee

Atas ialah kandungan terperinci Bagaimana untuk mencipta pustaka fungsi PHP dan menjadikannya menyokong suntikan pergantungan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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