खोज…
परिचय
आधिकारिक दस्तावेज में नहीं हैं आपके सिम्फनी एप्लिकेशन को कॉन्फ़िगर करने के लिए उदाहरण और अच्छे अभ्यास।
निर्देशिका से सभी कॉन्फ़िगरेशन फ़ाइलों को शामिल करें
थोड़ी देर के बाद, आप अपने config.yml में कई कॉन्फ़िगरेशन आइटम के साथ समाप्त होते हैं। यदि आप अपने कॉन्फ़िगरेशन को कई फ़ाइलों में विभाजित करते हैं, तो यह आपको पढ़ना आसान बना सकता है। आप आसानी से एक निर्देशिका से सभी फ़ाइलों को शामिल कर सकते हैं:
config.yml:
imports:
- { resource: parameters.yml }
- { resource: "includes/" }
includes
निर्देशिका में आप उदाहरण के लिए डाल सकते हैं doctrine.yml, Rapidmailer.yml, आदि।
सेवा आईडी के रूप में पूरी तरह से योग्य वर्ग नाम (FQCN) का उपयोग करें
कई उदाहरणों में, आपको 'acme.demo.service.id' (डॉट्स के साथ एक स्ट्रिंग) जैसी सेवा आईडी मिलेगी। आप services.yml
इस तरह दिखेगा:
services:
acme.demo.service.id:
class: Acme\DemoBundle\Services\DemoService
arguments: ["@doctrine.orm.default_entity_manager", "@cache"]
अपने नियंत्रक में, आप इस सेवा का उपयोग कर सकते हैं:
$service = $this->get('acme.demo.service.id');
हालांकि इसके साथ कोई समस्या नहीं है, आप सेवा आईडी के रूप में एक पूरी तरह से योग्य वर्ग नाम (FQCN) का उपयोग कर सकते हैं:
services:
Acme\DemoBundle\Services\DemoService:
class: Acme\DemoBundle\Services\DemoService
arguments: ["@doctrine.orm.default_entity_manager", "@cache"]
अपने नियंत्रक में आप इसे इस तरह उपयोग कर सकते हैं:
use Acme\DemoBundle\Services\DemoService;
// ..
$this->get(DemoService::class);
इससे आपका कोड समझने में बेहतर होता है। कई मामलों में यह कोई मतलब नहीं है कि एक सेवा आईडी है जो सिर्फ कक्षा का नाम नहीं है।
सिम्फनी 3.3 के रूप में, यदि आप सेवा आईडी एक FQCN है, तो आप class
विशेषता को भी हटा सकते हैं।
कोई HTTP इंटरफ़ेस की आवश्यकता है?
अपने आवेदन (एक सांत्वना केवल अनुप्रयोग के लिए उदाहरण के लिए) किसी भी HTTP इंटरफ़ेस की जरूरत नहीं है, तो आप कम से कम अक्षम करना चाहते हैं Twig
और SensioFrameworkExtra
बस उन पंक्तियों पर टिप्पणी करें:
एप्लिकेशन / AppKernel.php
$bundles = [
//...
// new Symfony\Bundle\TwigBundle\TwigBundle(),
// new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
//...
if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
//...
// $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
एप्लिकेशन / config / config.yml
framework:
# ...
# router:
# resource: '%kernel.root_dir%/config/routing.yml'
# strict_requirements: ~
# ...
# templating:
# engines: ['twig']
#...
#twig:
# debug: '%kernel.debug%'
# strict_variables: '%kernel.debug%'
एप्लिकेशन / config / config_dev.yml
#framework:
# router:
# resource: '%kernel.root_dir%/config/routing_dev.yml'
# strict_requirements: true
# profiler: { only_exceptions: false }
#web_profiler:
# toolbar: true
# intercept_redirects: false
आप कंपोज़र से संबंधित विक्रेता आवश्यकताओं को भी हटा सकते हैं। json :
"sensio/framework-extra-bundle": "x.x.x",
"twig/twig": "x.x"
ऐसे मामले में सिम्फनी का उपयोग करना यकीनन उचित है, लेकिन कम से कम यह अस्थायी हो सकता है।