Rumah pembangunan bahagian belakang tutorial php Bagaimana cara menggunakan Pimple dengan CakePHP?

Bagaimana cara menggunakan Pimple dengan CakePHP?

Jun 04, 2023 am 08:32 AM
cakephp pimple Suntikan kebergantungan.

CakePHP ialah rangka kerja PHP popular yang telah menjadi pilihan pertama untuk banyak aplikasi web kerana fleksibiliti dan kemudahan penggunaannya. Pimple ialah bekas suntikan kebergantungan PHP mudah yang membantu pembangun mengurus kebergantungan objek mereka dengan lebih baik. Dalam artikel ini, kita akan belajar cara menggunakan Pimple dalam projek CakePHP.

1. Pasang Jerawat

Sangat mudah untuk memasang Jerawat menggunakan Komposer. Buka terminal dalam direktori akar projek dan jalankan arahan berikut:

composer require pimple/pimple
Salin selepas log masuk

Ini akan memasang bekas suntikan ketergantungan Pimple dalam projek anda.

2. Cipta bekas suntikan kebergantungan

Buat direktori baharu "src/Container" dalam projek CakePHP anda (jika direktori itu belum wujud). Dalam direktori ini, cipta fail baharu yang dipanggil "Container.php" dan isikan kandungannya dengan kod berikut:

namespace AppContainer;

use PimpleContainer;

class Container extends Container
{
    public function __construct()
    {
        // 注册您的依赖项和服务
    }
}
Salin selepas log masuk

Dalam pembina kelas ini anda boleh mendaftarkan perkhidmatan atau kebergantungan anda. Contohnya, jika anda ingin mendaftarkan contoh kelas MyService, anda boleh menambah kod berikut pada pembina:

$this->register(new MyService());
Salin selepas log masuk

Anda juga boleh menggunakan $this['myservice'] untuk mengakses perkhidmatan.

3. Cipta Pengawal

Mari kami andaikan bahawa aplikasi anda memerlukan "Pengawal Pengguna" dengan tindakan berikut:

  1. indeks - memaparkan semua Senarai pengguna
  2. tunjukkan - Tunjukkan butiran setiap pengguna

Mula-mula, mari buat direktori baharu “src/Controller” untuk UserController. Dalam direktori ini, cipta fail baharu yang dipanggil "UserController.php" dan isi kandungannya dengan kod berikut:

namespace AppController;

use AppContainerContainer;

class UserController extends AppController
{
    protected $container;
    
    public function __construct(Container $container)
    {
        $this->container = $container;
        parent::__construct();
    }
    
    public function index()
    {
        $userRepository = $this->container['repository.user'];
        $users = $userRepository->findAll();
        $this->set(compact('users'));
    }
    
    public function show($id)
    {
        $userRepository = $this->container['repository.user'];
        $user = $userRepository->findById($id);
        $this->set(compact('user'));
    }
}
Salin selepas log masuk

Dalam contoh ini, kami menggunakan bekas sebagai "$userRepository" sebagai kelas UserService Instance disuntik ke dalam "UserController".

4. Perkhidmatan Pendaftaran

Kini, kami mencipta direktori baharu "src/Repository" untuk gudang. Dalam direktori ini, cipta fail baharu yang dipanggil "UserRepository.php" dan isikan kandungannya dengan kod berikut:

namespace AppRepository;

use AppModelEntityUser;

class UserRepository
{
    protected $entityManager;
    
    public function __construct(EntityManager $entityManager)
    {
        $this->entityManager = $entityManager;
    }
    
    public function findAll()
    {
        return $this->entityManager->getRepository(User::class)->findAll();
    }
    
    public function findById($id)
    {
        return $this->entityManager->getRepository(User::class)->find($id);
    }
}
Salin selepas log masuk

Repositori ini memerlukan kebergantungan yang dipanggil "EntityManager". Mari tambahkan ini ke dalam bekas Jerawat kami. Dalam fail Container.php kami, tambahkan baris berikut:

$this['repository.user'] = function ($c) {
    return new AppRepositoryUserRepository($c['entity_manager']);
};
$this['entity_manager'] = function ($c) {
    // 配置和返回Doctrine的EntityManager实例
};
Salin selepas log masuk

Di sini kami mentakrifkan kelas UserRepository sebagai perkhidmatan yang dipanggil "repository.user" dan menyediakan entiti yang dipanggil "entity_manager" menggunakan perkhidmatan suntikan dependency.

5. Selesai

Sekarang kami telah melengkapkan semua tetapan. Kami kini boleh menggunakan bekas dalam aplikasi kami dan menggunakan suntikan kebergantungan untuk mengurus kebergantungan objek kami.

Dengan menggunakan Pimple, kami boleh menguruskan kebergantungan kami dengan mudah dan mengelakkan gandingan yang ketat antara kelas. Ia menjadikan ujian dan penyelenggaraan kod lebih mudah kerana ia memudahkan untuk menukar kebergantungan.

Perhatikan bahawa apabila menggunakan suntikan kebergantungan, instantiasi langsung dalam kelas harus dielakkan. Sebaliknya, kebergantungan ini harus disuntik ke dalam pembina kelas atau kaedah penetap autoloading untuk ujian unit yang mudah dan pemfaktoran semula kod.

Saya harap artikel ini dapat membantu anda lebih memahami cara menggunakan Pimple untuk suntikan pergantungan dalam CakePHP dan memberikan anda pengalaman pembangunan yang lebih baik.

Atas ialah kandungan terperinci Bagaimana cara menggunakan Pimple dengan CakePHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Konfigurasi Projek CakePHP Konfigurasi Projek CakePHP Sep 10, 2024 pm 05:25 PM

Dalam bab ini, kita akan memahami Pembolehubah Persekitaran, Konfigurasi Umum, Konfigurasi Pangkalan Data dan Konfigurasi E-mel dalam CakePHP.

CakePHP Bekerja dengan Pangkalan Data CakePHP Bekerja dengan Pangkalan Data Sep 10, 2024 pm 05:25 PM

Bekerja dengan pangkalan data dalam CakePHP adalah sangat mudah. Kami akan memahami operasi CRUD (Buat, Baca, Kemas Kini, Padam) dalam bab ini.

Bagaimana untuk menggunakan pembina pertanyaan pangkalan data dalam CakePHP? Bagaimana untuk menggunakan pembina pertanyaan pangkalan data dalam CakePHP? Jun 04, 2023 am 09:02 AM

CakePHP ialah rangka kerja PHPMVC sumber terbuka yang digunakan secara meluas dalam pembangunan aplikasi web. CakePHP mempunyai banyak ciri dan alatan, termasuk pembina pertanyaan pangkalan data yang berkuasa untuk pangkalan data prestasi interaktif. Pembina pertanyaan ini membolehkan anda melaksanakan pertanyaan SQL menggunakan sintaks berorientasikan objek tanpa perlu menulis pernyataan SQL yang menyusahkan. Artikel ini akan memperkenalkan cara menggunakan pembina pertanyaan pangkalan data dalam CakePHP. Mewujudkan sambungan pangkalan data Sebelum menggunakan pembina pertanyaan pangkalan data, anda perlu membuat sambungan pangkalan data dalam Ca

Bagaimana untuk membuat penomboran tersuai dalam CakePHP? Bagaimana untuk membuat penomboran tersuai dalam CakePHP? Jun 04, 2023 am 08:32 AM

CakePHP ialah rangka kerja PHP yang berkuasa yang menyediakan pembangun dengan banyak alat dan ciri berguna. Salah satu daripadanya ialah penomboran, yang membantu kami membahagikan sejumlah besar data kepada beberapa halaman, menjadikan penyemakan imbas dan manipulasi lebih mudah. Secara lalai, CakePHP menyediakan beberapa kaedah penomboran asas, tetapi kadangkala anda mungkin perlu mencipta beberapa kaedah penomboran tersuai. Artikel ini akan menunjukkan kepada anda cara membuat penomboran tersuai dalam CakePHP. Langkah 1: Cipta kelas penomboran tersuai Pertama, kita perlu mencipta kelas penomboran tersuai. ini

Pengesah Mencipta CakePHP Pengesah Mencipta CakePHP Sep 10, 2024 pm 05:26 PM

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Penghalaan CakePHP Penghalaan CakePHP Sep 10, 2024 pm 05:25 PM

Dalam bab ini, kita akan mempelajari topik berikut yang berkaitan dengan penghalaan ?

See all articles