পরিষ্কার উপায় - 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
পরামিতিগুলি নেওয়া দরকার ।