Rumah Perpustakaan PHP Perpustakaan lain Pustaka PHP untuk bekas suntikan kebergantungan
Pustaka PHP untuk bekas suntikan kebergantungan
<?php
namespace Auryn;
class CachingReflector implements Reflector
{
    const CACHE_KEY_CLASSES = 'auryn.refls.classes.';
    const CACHE_KEY_CTORS = 'auryn.refls.ctors.';
    const CACHE_KEY_CTOR_PARAMS = 'auryn.refls.ctor-params.';
    const CACHE_KEY_FUNCS = 'auryn.refls.funcs.';
    const CACHE_KEY_METHODS = 'auryn.refls.methods.';
    private $reflector;
    private $cache;
    public function __construct(Reflector $reflector = null, ReflectionCache $cache = null)
    {
        $this->reflector = $reflector ?: new StandardReflector;
        $this->cache = $cache ?: new ReflectionCacheArray;
    }
    public function getClass($class)
    {
        $cacheKey = self::CACHE_KEY_CLASSES . strtolower($class);
        if (!$reflectionClass = $this->cache->fetch($cacheKey)) {
            $reflectionClass = new \ReflectionClass($class);
            $this->cache->store($cacheKey, $reflectionClass);
        }
        return $reflectionClass;
    }

Idea kami ialah apabila aplikasi menggunakan kelas Foo, ia akan mencipta kelas Foo dan memanggil kaedah kelas Foo Jika kaedah ini memerlukan kelas Bar, ia akan mencipta kelas Bar dan memanggil kaedah kelas Bar, dan kaedah ini Jika kelas Bim diperlukan, kelas Bim akan dibuat dan kemudian kerja lain akan dilakukan. Idea menggunakan suntikan dependensi ialah aplikasi menggunakan kelas Foo, kelas Foo memerlukan kelas Bar, dan kelas Bar memerlukan kelas Bim, kemudian buat kelas Bim dahulu, kemudian buat kelas Bar dan suntikan Bim, kemudian buat kelas Foo, dan masukkan kelas Bar , kemudian panggil kaedah Foo, Foo panggil kaedah Bar, dan kemudian lakukan kerja lain. Ini ialah corak Inretakon of Control. Kawalan kebergantungan diterbalikkan kepada permulaan rantaian panggilan. Dengan cara ini anda mempunyai kawalan penuh ke atas kebergantungan dan mengawal kelakuan program anda dengan melaraskan objek suntikan yang berbeza. Sebagai contoh, kelas Foo menggunakan memcache, dan anda boleh menggunakan redis sebaliknya tanpa mengubah suai kod kelas Foo.

Idea selepas menggunakan bekas suntikan kebergantungan ialah jika aplikasi perlu mengakses kelas Foo, ia mendapat kelas Foo daripada bekas, bekas mencipta kelas Bim, kemudian mencipta kelas Bar dan menyuntik Bim, kemudian mencipta Kelas Foo, dan menyuntik Bar ke dalamnya, dan kemudian menggunakan Program memanggil kaedah Foo, Foo memanggil kaedah Bar, dan kemudian melakukan kerja lain Secara ringkasnya, bekas bertanggungjawab untuk instantiasi, menyuntik kebergantungan, memproses kebergantungan, dsb.


Penafian

Semua sumber di laman web ini disumbangkan oleh netizen atau dicetak semula oleh tapak muat turun utama. Sila semak integriti perisian itu sendiri! Semua sumber di laman web ini adalah untuk rujukan pembelajaran sahaja. Tolong jangan gunakannya untuk tujuan komersial. Jika tidak, anda akan bertanggungjawab untuk semua akibat! Jika terdapat sebarang pelanggaran, sila hubungi kami untuk memadamkannya. Maklumat hubungan: admin@php.cn

Artikel Berkaitan

Artikel untuk bercakap tentang suntikan kebergantungan DI dalam php Artikel untuk bercakap tentang suntikan kebergantungan DI dalam php

25 Aug 2022

Apakah suntikan pergantungan DI? Artikel berikut akan memberi anda pemahaman yang mendalam tentang suntikan pergantungan DI dalam PHP. Saya harap ia akan membantu anda!

Bagaimana untuk Mencipta Perpustakaan Statik daripada Berbilang Perpustakaan Statik Lain? Bagaimana untuk Mencipta Perpustakaan Statik daripada Berbilang Perpustakaan Statik Lain?

17 Dec 2024

Mencipta Perpustakaan Statik yang Berpaut ke Perpustakaan Statik Lain Apabila membina perpustakaan statik yang bergantung pada kebergantungan daripada berbilang yang lain...

Pengepala Perpustakaan Standard C Manakah yang Termasuk Secara Eksplisit Lain? Pengepala Perpustakaan Standard C Manakah yang Termasuk Secara Eksplisit Lain?

01 Nov 2024

Pengepala yang manakah dalam Perpustakaan Standard C Termasuk Lain-lain? Secara umumnya, pengaturcara tidak seharusnya menganggap bahawa satu pengepala perpustakaan standard C akan...

Bagaimanakah Saya Memautkan Perpustakaan Statik yang Bergantung pada Perpustakaan Statik Lain? Bagaimanakah Saya Memautkan Perpustakaan Statik yang Bergantung pada Perpustakaan Statik Lain?

13 Dec 2024

Memautkan Perpustakaan Statik ke Perpustakaan Statik Lain: Pendekatan Komprehensif Perpustakaan statik menyediakan mekanisme yang mudah untuk membungkus yang boleh digunakan semula...

Pengepala yang manakah dalam Perpustakaan Standard C Menjamin Fungsi atau Kemasukan Khusus? Pengepala yang manakah dalam Perpustakaan Standard C Menjamin Fungsi atau Kemasukan Khusus?

02 Nov 2024

Pengepala dalam Perpustakaan Standard C dengan Kemasukan TerjaminDalam perpustakaan standard C, pengepala boleh menyertakan satu sama lain dalam pelbagai cara yang tidak...

Bagaimanakah jQuery Memudahkan Manipulasi DOM untuk Pembangun Web? Bagaimanakah jQuery Memudahkan Manipulasi DOM untuk Pembangun Web?

03 Jan 2025

Limpahan: Tersembunyi dan Pengembangan HeightjQuery membezakan dirinya daripada perpustakaan JavaScript lain melalui keserasian merentas platform dan...

See all articles