सिम्फनी - बंडल्स
एक सिम्फनी बंडल एक विशिष्ट संरचना में आयोजित फाइलों और फ़ोल्डरों का एक संग्रह है। बंडलों को इस तरह से मॉडल किया गया है कि इसे कई अनुप्रयोगों में पुन: उपयोग किया जा सकता है। मुख्य एप्लिकेशन को स्वयं एक बंडल के रूप में पैक किया जाता है और इसे आम तौर पर कहा जाता हैAppBundle।
एक बंडल को किसी एप्लिकेशन जैसे कि AdminBundle (एडमिन सेक्शन), BlogBundle (साइट का ब्लॉग), आदि के लिए पैक किया जा सकता है। ऐसे बंडल को किसी एप्लिकेशन के बीच साझा नहीं किया जा सकता है। इसके बजाय, हम एप्लिकेशन का एक निश्चित भाग जैसे कि सामान्य बंडल के रूप में ब्लॉग को मॉडल कर सकते हैं ताकि हम ब्लॉग कार्यक्षमता का पुन: उपयोग करने के लिए बंडल को एक एप्लिकेशन से दूसरे एप्लिकेशन में कॉपी कर सकें।
एक बंडल की संरचना
एक बंडल की मूल संरचना इस प्रकार है।
Controller - सभी नियंत्रक को यहां रखा जाना चाहिए।
DependencyInjection - सभी निर्भरता इंजेक्शन संबंधित कोड और कॉन्फ़िगरेशन को यहां रखा जाना चाहिए।
Resources/config - बंड संबंधित कॉन्फ़िगरेशन यहां रखे गए हैं।
Resources/view - यहां बंडल संबंधित व्यू टेम्प्लेट रखे गए हैं।
Resources/public - बंडल संबंधित स्टाइलशीट, जावा स्क्रिप्ट, चित्र इत्यादि यहां रखे गए हैं।
Tests - बंडल से संबंधित यूनिट टेस्ट फाइलें यहां रखी गई हैं।
एक बंडल बनाना
आइए हम एक सरल बंडल बनाते हैं, TutorialspointDemoBundle हमारे में HelloWorld आवेदन।
Step 1- एक नाम स्थान चुनें। बंडल के नाम स्थान में विक्रेता का नाम और बंडल नाम शामिल होना चाहिए। हमारे मामले में, यह हैTutorialspoint\DemoBundle।
Step 2 - एक खाली वर्ग बनाएं, TutorialspointDemoBundle विस्तार करके Bundle इसे नीचे रखें src/Tutorialspoint/DemoBundle।
namespace Tutorialspoint\DemoBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class TutorialspointDemoBundle extends Bundle {
}
Step 3 - आवेदन में समर्थित बंडल की सूची में वर्ग को पंजीकृत करें AppKernel कक्षा।
public function registerBundles() {
$bundles = array(
// ...
// register your bundle
new Tutorialspoint\DemoBundle\TutorialspointDemoBundle(),
);
return $bundles;
}
यह सब एक खाली बंडल बनाने के लिए आवश्यक है और अन्य सभी अवधारणाएं अनुप्रयोग के समान हैं। सिम्फनी एक कंसोल कमांड भी प्रदान करता हैgenerate:bundle एक नई बंडल बनाने की प्रक्रिया को सरल बनाने के लिए, जो निम्नानुसार है।
php bin/console generate:bundle --namespace = Tutorialspoint/DemoBundle
परिणाम
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 :).