सिम्फनी तरीके के अनुसार सबसे अच्छा अभ्यास क्या है?
विकल्प १ :
class MyController extends Controller
{
public function myAction(...)
{
// ..
$example = $this->getDoctrine()->getRepository('AppBundle:Contract')->getContracts(array(
'company_id' => $company->getId(),
'contract_month_date_start' => date('Y-m-d', strtotime('first day of this month', $contractDate->getTimestamp())),
'contract_month_date_end' => date('Y-m-d', strtotime('last day of this month', $contractDate->getTimestamp())),
));
// ..
}
}
class ExampleRepository extends EntityRepository
{
public function getContracts($options)
{
//..
$qb->select('contract')
->from('AppBundle:Contract', 'contract')
->where('contract.companyId = :company_id')
->andWhere('contract.startDate < :contract_month_date_end')
->andWhere('contract.endDate < :contract_month_date_end')
->setParameter('company_id', $options['company_id'])
->setParameter('contract_month_date_start', $options['contract_month_date_start'])
->setParameter('contract_month_date_end', $options['contract_month_date_end']);
//..
}
}
विकल्प २ :
class MyController extends Controller
{
public function myAction(...)
{
// ..
$example = $this->getDoctrine()->getRepository('AppBundle:Contract')->getContracts(array(
'company' => $company,
'contractDate' => $contractDate
));
// ..
}
}
class ExampleRepository extends EntityRepository
{
public function getContracts($options)
{
//..
$company_id = $options['company']->getId();
$contract_month_date_start = date('Y-m-d', strtotime('first day of this month', $options['contractDate']));
$contract_month_date_end = date('Y-m-d', strtotime('last day of this month', $options['contractDate']));
$qb->select('contract')
->from('AppBundle:Contract', 'contract')
->where('contract.companyId = :company_id')
->andWhere('contract.startDate < :contract_month_date_end')
->andWhere('contract.endDate < :contract_month_date_end')
->setParameter('company_id', $company_id)
->setParameter('contract_month_date_start', $contract_month_date_start)
->setParameter('contract_month_date_end', $contract_month_date_end);
//..
}
}
मुझे लगता है कि दूसरा बेहतर है (भंडार का उपयोग कर विभिन्न नियंत्रकों के बीच कम डुप्लिकेट कोड)। लेकिन मुझे यह भी लगता है कि यह रिपोजिटरी को बहुत अधिक जिम्मेदारी देता है।
1 उत्तर
मैं प्रेजेंटेशन लेयर में इस तरह का काम करना पसंद करता हूं, अगर आप TWIG का उपयोग कर रहे हैं तो आपको date फ़ॉर्मैट फ़िल्टर या अगर यह एक एपीआई है तो आप JMS क्रमांकन उदाहरण के तौर पर।
इस तरह व्यावसायिक तर्क नहीं बदलता है और प्रस्तुति तर्क के परिवर्तन के बारे में प्रभावित नहीं होता है
मेरे दो सेंट।
संबंधित सवाल
नए सवाल
php
PHP एक व्यापक रूप से उपयोग किया जाता है, उच्च-स्तरीय, गतिशील, वस्तु-उन्मुख, और व्याख्या की गई स्क्रिप्टिंग भाषा मुख्य रूप से सर्वर-साइड वेब विकास के लिए डिज़ाइन की गई है। PHP भाषा के बारे में सवालों के लिए इस्तेमाल किया।