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.
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
Isikan maklumat pakej dan kemudian jalankan arahan berikut untuk memasang autoloader Komposer:
composer install
Sekarang, buat direktori baharu dalam projek anda untuk digunakan sebagai kod perpustakaan fungsi. Contohnya:
php └── vendor └── my-library └── src └── FunctionLibrary.php
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!"; } }
配置依赖项注入
为了支持 DI,您需要使用一个容器来解决依赖项。本文将使用 PhpDI 容器。
在您的函数库包中安装 PhpDI:
composer require php-di/phpdi
接下来,在 src/config.php
$containerBuilder = new \DI\ContainerBuilder(); $containerBuilder->addDefinitions([ 'MyLibrary\FunctionLibrary' => \DI\factory(function () { return new FunctionLibrary(); }) ]); $container = $containerBuilder->build();
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!
src/config.php
: namespace MyLibrary; class UserRepository { private $connection; public function __construct(\PDO $connection) { $this->connection = $connection; } public function persist(User $user): void { // 保存用户到数据库 } }
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)); }) ]);
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!