Symfony - Kumpulan

Paket Symfony adalah kumpulan file dan folder yang diatur dalam struktur tertentu. Bundel tersebut dimodelkan sedemikian rupa sehingga dapat digunakan kembali dalam banyak aplikasi. Aplikasi utama itu sendiri dikemas sebagai satu bundel dan biasanya disebutAppBundle.

Bundel dapat dikemas khusus untuk aplikasi seperti AdminBundle (bagian admin), BlogBundle (blog situs), dll. Bundel tersebut tidak dapat dibagikan antar aplikasi. Sebagai gantinya, kita dapat membuat model bagian tertentu dari aplikasi seperti blog sebagai bundel umum sehingga kita dapat dengan mudah menyalin bundel dari satu aplikasi ke aplikasi lain untuk menggunakan kembali fungsionalitas blog.

Struktur Bundel

Struktur dasar sebuah bundel adalah sebagai berikut.

  • Controller - Semua pengontrol harus ditempatkan di sini.

  • DependencyInjection - Semua kode dan konfigurasi terkait injeksi ketergantungan perlu ditempatkan di sini.

  • Resources/config - Konfigurasi terkait bundel ditempatkan di sini.

  • Resources/view - Templat tampilan terkait bundel ditempatkan di sini.

  • Resources/public - Bundel terkait lembar gaya, JavaScripts, gambar, dll., Ditempatkan di sini.

  • Tests - File pengujian unit terkait bundel ditempatkan di sini.

Membuat Bundel

Mari kita buat bundel sederhana, TutorialspointDemoBundle di kami HelloWorld aplikasi.

Step 1- Pilih namespace. Namespace paket harus menyertakan nama vendor dan nama paket. Dalam kasus kami, itu benarTutorialspoint\DemoBundle.

Step 2 - Buat kelas kosong, TutorialspointDemoBundle dengan memperluas Bundle kelas dan letakkan di bawah src/Tutorialspoint/DemoBundle.

namespace Tutorialspoint\DemoBundle; 
use Symfony\Component\HttpKernel\Bundle\Bundle;  

class TutorialspointDemoBundle extends Bundle { 
}

Step 3 - Daftarkan kelas dalam daftar bundel yang didukung oleh aplikasi di AppKernel kelas.

public function registerBundles() { 
   $bundles = array( 
      // ... 
      // register your bundle 
      new Tutorialspoint\DemoBundle\TutorialspointDemoBundle(), 
   ); 
   return $bundles; 
}

Ini semua diperlukan untuk membuat bundel kosong dan semua konsep lainnya sama dengan yang ada di aplikasi. Symfony juga menyediakan perintah konsolgenerate:bundle untuk mempermudah proses pembuatan bundle baru, yaitu sebagai berikut.

php bin/console generate:bundle --namespace = Tutorialspoint/DemoBundle

Hasil

Welcome to the Symfony bundle generator!

Are you planning on sharing this bundle across multiple applications? [no]: no  

Your application code must be written in bundles. This command helps 
you generate them easily.  

Give your bundle a descriptive name, like BlogBundle. 
Bundle name [Tutorialspoint/DemoBundle]:   

In your code, a bundle is often referenced by its name. It can be the 
concatenation of all namespace parts but it's really up to you to come 
up with a unique name (a good practice is to start with the vendor name). 
Based on the namespace, we suggest TutorialspointDemoBundle.  

Bundle name [TutorialspointDemoBundle]:  
Bundles are usually generated into the src/ directory. Unless you're 
doing something custom, hit enter to keep this default!
Target Directory [src/]:   

What format do you want to use for your generated configuration?  

Configuration format (annotation, yml, xml, php) [annotation]:

Bundle generation

> Generating a sample bundle skeleton into app/../src/Tutorialspoint/DemoBundle 
   created ./app/../src/Tutorialspoint/DemoBundle/ 
   created ./app/../src/Tutorialspoint/DemoBundle/TutorialspointDemoBundle.php 
   created ./app/../src/Tutorialspoint/DemoBundle/Controller/ 
   created ./app/../src/Tutorialspoint/DemoBundle/Controller/DefaultController.php 
   created ./app/../tests/TutorialspointDemoBundle/Controller/   
   created ./app/../tests/TutorialspointDemoBundle/Controller/DefaultControllerTest.php 
   created ./app/../src/Tutorialspoint/DemoBundle/Resources/views/Default/   
   created ./app/../src/Tutorialspoint/DemoBundle/Resources/views/Default/index.html.twig 
   created ./app/../src/Tutorialspoint/DemoBundle/Resources/config/ 
   created ./app/../src/Tutorialspoint/DemoBundle/Resources/config/services.yml 
> Checking that the bundle is autoloaded 
> Enabling the bundle inside app/AppKernel.php 
   updated ./app/AppKernel.php 
> Importing the bundle's routes from the app/config/routing.yml file 
   updated ./app/config/routing.yml 
> Importing the bundle's services.yml from the app/config/config.yml file 
   updated ./app/config/config.yml 
Everything is OK! Now get to work :).