द क्लीन वे - 2018+, सिम्फनी 3.4+
2017 और सिम्फनी 3.3 + 3.4 के बाद से बहुत क्लीनर तरीका है - सेटअप और उपयोग में आसान।
कंटेनर और सेवा / पैरामीटर लोकेटर विरोधी पैटर्न का उपयोग करने के बजाय, आप मापदंडों को कक्षा के माध्यम से पास कर सकते हैं । चिंता मत करो, यह समय की मांग का काम नहीं है, बल्कि एक बार सेटअप करें और दृष्टिकोण को भूल जाएं ।
इसे 2 चरणों में कैसे सेट करें?
1। app/config/services.yml
# config.yml
# config.yml
parameters:
api_pass: 'secret_password'
api_user: 'my_name'
services:
_defaults:
autowire: true
bind:
$apiPass: '%api_pass%'
$apiUser: '%api_user%'
App\:
resource: ..
2. कोई भी Controller
<?php declare(strict_types=1);
final class ApiController extends SymfonyController
{
/**
* @var string
*/
private $apiPass;
/**
* @var string
*/
private $apiUser;
public function __construct(string $apiPass, string $apiUser)
{
$this->apiPass = $apiPass;
$this->apiUser = $apiUser;
}
public function registerAction(): void
{
var_dump($this->apiPass); // "secret_password"
var_dump($this->apiUser); // "my_name"
}
}
झटपट अपग्रेड तैयार!
यदि आप पुराने दृष्टिकोण का उपयोग करते हैं, तो आप इसे रेक्टर के साथ स्वचालित कर सकते हैं ।
अधिक पढ़ें
इसे सर्विसेज लोकेटर पर कंस्ट्रक्टर इंजेक्शन कहा जाता है एप्रोच के ।
इसके बारे में अधिक पढ़ने के लिए, मेरी पोस्ट की जाँच करें कि सिम्फनी कंट्रोलर द क्लीन वे में पैरामीटर कैसे प्राप्त करें ।
(यह परीक्षण किया गया है और मैं इसे नए सिम्फनी प्रमुख संस्करण (5, 6 ...) के लिए अद्यतन रखता हूं)।
get
नियंत्रक में विधि कंटेनर का भी उपयोग करती है, लेकिन यह केवल एक कंटेनर से सेवाएं प्राप्त कर सकती है, पैरामीटर नहीं। आपकोgetParameter
पैरामीटर प्राप्त करने की आवश्यकता है।