আমি আমার নিজস্ব পরিষেবা তৈরি করেছি এবং আমাকে এন্টিটি ম্যানেজারের মতবাদের ইঞ্জেকশন লাগানো দরকার, তবে আমি দেখছি না যে __construct()
আমার পরিষেবাটিতে ডাকা হয়েছিল, এবং ইঞ্জেকশনটি কাজ করে না।
এখানে কোড এবং কনফিগারেশন রয়েছে:
<?php
namespace Test\CommonBundle\Services;
use Doctrine\ORM\EntityManager;
class UserService {
/**
*
* @var EntityManager
*/
protected $em;
public function __constructor(EntityManager $entityManager)
{
var_dump($entityManager);
exit(); // I've never saw it happen, looks like constructor never called
$this->em = $entityManager;
}
public function getUser($userId){
var_dump($this->em ); // outputs null
}
}
এখানে services.yml
আমার বান্ডিল হয়
services:
test.common.userservice:
class: Test\CommonBundle\Services\UserService
arguments:
entityManager: "@doctrine.orm.entity_manager"
আমি config.yml
আমার অ্যাপ্লিকেশনটিতে। জিমটি আমদানি করেছি
imports:
# a few lines skipped, not relevant here, i think
- { resource: "@TestCommonBundle/Resources/config/services.yml" }
এবং যখন আমি পরিষেবাটিতে কল করে থাকি
$userservice = $this->get('test.common.userservice');
$userservice->getUser(123);
আমি একটি বস্তু পেয়েছি (নাল নয়) তবে $this->em
ইউজার সার্ভিসে শূন্য, এবং যেমনটি আমি ইতিমধ্যে উল্লেখ করেছি, ইউজারসোর্সিতে কনস্ট্রাক্টরকে কখনই ডাকা হয়নি
আর একটি বিষয়, কন্ট্রোলার এবং ব্যবহারকারী পরিষেবা বিভিন্ন বান্ডিলগুলিতে রয়েছে (প্রকল্পটি সুসংগঠিত রাখার জন্য আমার সত্যই প্রয়োজন), তবে এখনও: অন্যরকম ভাল কাজ করে, আমি এমনকি কল করতে পারি
$this->get('doctrine.orm.entity_manager')
আমি একইভাবে ব্যবহারকারীর পরিষেবা পেতে এবং বৈধ (নাল নয়) সত্তাটি ম্যানেজার অবজেক্টটি পেতে ব্যবহার করি।
দেখে মনে হচ্ছে যে আমি কনফিগারেশনের টুকরো বা ইউজার সার্ভিস এবং ডক্ট্রাইন কনফিগারেশনের মধ্যে কিছু লিঙ্ক মিস করছি।