<?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.
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
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!
17 Dec 2024
Mencipta Perpustakaan Statik yang Berpaut ke Perpustakaan Statik Lain Apabila membina perpustakaan statik yang bergantung pada kebergantungan daripada berbilang yang 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...
13 Dec 2024
Memautkan Perpustakaan Statik ke Perpustakaan Statik Lain: Pendekatan Komprehensif Perpustakaan statik menyediakan mekanisme yang mudah untuk membungkus yang boleh digunakan semula...
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...
03 Jan 2025
Limpahan: Tersembunyi dan Pengembangan HeightjQuery membezakan dirinya daripada perpustakaan JavaScript lain melalui keserasian merentas platform dan...
Hot Tools
Koleksi 50 algoritma PHP klasik yang sangat baik
Algoritma PHP klasik, pelajari idea yang sangat baik dan kembangkan pemikiran anda
Pustaka PHP kecil untuk mengoptimumkan imej
Pustaka PHP kecil untuk mengoptimumkan imej
Kelas fungsi PHP untuk algoritma kebarangkalian menang
Kelas fungsi PHP untuk algoritma kebarangkalian menang