cari
  • Log masuk
  • Daftar
Penetapan semula kata laluan berjaya

Ikuti proiects vou berminat dengan andi aet terbaru mengenai mereka

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

Bagaimana untuk melaksanakan bekas suntikan kebergantungan seperti PHP-DI dengan Komposer 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 untuk memulakan bekas suntikan kebergantungan dengan betul untuk mengelakkan sifat nol Cara untuk memulakan bekas suntikan kebergantungan dengan betul untuk mengelakkan sifat nol

27 Feb 2026

Artikel ini menerangkan ralat biasa dalam senario suntikan kebergantungan PHP (DI) yang mana atribut kelas tidak boleh mendapatkan perkhidmatan yang didaftarkan dalam bekas disebabkan oleh pemasaan penciptaan objek yang tidak betul dan menyediakan urutan permulaan yang betul dan cadangan praktikal.

Cara Redis mengendalikan kunci tamat tempoh daripada pangkalan data hamba_Bergantung pada pangkalan data induk untuk menghantar arahan DEL untuk memastikan pemadaman konsisten data tuan-hamba Cara Redis mengendalikan kunci tamat tempoh daripada pangkalan data hamba_Bergantung pada pangkalan data induk untuk menghantar arahan DEL untuk memastikan pemadaman konsisten data tuan-hamba

19 Mar 2026

Pustaka hamba tidak memadamkan kunci tamat tempoh secara aktif, tetapi hanya menyegerakkan arahan DEL dengan perpustakaan induk untuk mencapai konsistensi akhir; perpustakaan induk bertanggungjawab untuk semua penghakiman tamat tempoh dan pemadaman, dan menyebarkan DEL dan arahan lain ke perpustakaan hamba untuk dilaksanakan.

Cara Berinteraksi dengan Twitter (X) API V2 di Python 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 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.

Apakah perbezaan antara pemulihan pangkalan data penuh mysql dan arahan kaedah operasi recovery_mysql pangkalan data tunggal Apakah perbezaan antara pemulihan pangkalan data penuh mysql dan arahan kaedah operasi recovery_mysql pangkalan data tunggal

09 Feb 2026

Pemulihan pangkalan data penuh adalah untuk mengimport terus fail SQL yang dijana oleh mysqldump--semua-pangkalan data, meliputi semua perpustakaan (termasuk perpustakaan sistem). Risikonya tinggi, tetapi ia sesuai untuk keseluruhan ranap kejadian; anda mesti menyemak kenyataan CREATEDATABASE, senarai pustaka sasaran dan set aksara, mod SQL, penyegerakan perpustakaan kebenaran dan butiran lain.

Tunjukkan Lagi