<?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
Bagaimana untuk melaksanakan bekas suntikan kebergantungan seperti PHP-DI dengan Komposer
17 Dec 2025
Mula-mula, pasang pustaka PHP-DI dan konfigurasikan pemuatan automatik, kemudian buat contoh kontena, gunakan pemasangan automatik dan taip petunjuk untuk menyelesaikan kebergantungan secara automatik, melaksanakan suntikan tersuai dengan mentakrifkan penggantian, dan akhirnya menyepadukan bekas ke dalam aplikasi untuk mengurus penciptaan objek perkhidmatan dan suntikan kebergantungan.
Cara Berinteraksi dengan Twitter (X) API V2 di Python
22 Nov 2025
Jawapannya ialah menggunakan pengesahan Bearertoken atau OAuth2.0 dan hubungi XAPIV2 melalui perpustakaan Tweepy atau Permintaan. Mula -mula membuat aplikasi pada platform pemaju dan dapatkan kunci, pasangkan perpustakaan tweepy atau permintaan, dan kemudian gunakan klien tweepy atau permintaan untuk menghantar permintaan, seperti mencari tweet baru -baru ini, mendapatkan maklumat pengguna, dan lain -lain. Perhatikan kebenaran API dan had kadar.
Cara Membuat Metrik Prometheus Custom dalam Aplikasi Golang
15 Nov 2025
Jawapannya adalah untuk memperkenalkan Perpustakaan Pelanggan Prometheusgo, menentukan petunjuk tersuai seperti kaunter, tolok, dan lain -lain, mendaftar dan membenamkannya dalam pemproses HTTP, dan akhirnya mendedahkan data melalui titik akhir /metrik untuk membuat Prometheus crawlable.
Adakah jquery sebuah perpustakaan?
03 Nov 2022
jquery ialah perpustakaan. jquery ialah perpustakaan kod JavaScript yang sangat baik Ia adalah perpustakaan kelas yang dibangunkan untuk memudahkan pembangunan JS atau DOM dan operasi lain yang merangkumi kod fungsian (fungsi) JS yang biasa digunakan, menyediakan corak reka bentuk JS yang mudah, dan mengoptimumkan operasi Dokumen, pemprosesan acara, reka bentuk animasi, interaksi Ajax, dsb.
Apa itu gmake dalam linux
09 Nov 2022
Di Linux, gmake ialah GUN make, yang merupakan program yang popular dan biasa digunakan untuk membina perisian bahasa C Ia digunakan untuk membina kernel Linux dan program dan perpustakaan perisian GNU/Linux lain yang biasa digunakan. GNU Make ialah program yang boleh mengautomasikan perintah shell dan membantu melaksanakan tugas berulang-ulang ia sering digunakan untuk menukar fail ke dalam bentuk lain, seperti menyusun fail kod sumber ke dalam program atau perpustakaan.
Bagaimana Membina Perpustakaan Serialization Data Mudah (Seperti JSON atau XML) di C?
20 Nov 2025
Jawapan: Artikel memperkenalkan kaedah membina perpustakaan siri data yang mudah di C. Ia mula-mula mentakrifkan format seperti JSON yang menyokong rentetan, nombor, nilai boolean, dan lain-lain, kemudian merekabentuk variasi kelas berseri variasi yang dapat menyimpan pelbagai jenis
Alat popular
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




