ম্যাজেন্টো 2 এ, বেশিরভাগ ক্লাসে এই দুটি কনস্ট্রাক্ট ( __construct
এবং _construct
) পদ্ধতি রয়েছে। তাদের মধ্যে পার্থক্য কী?
ম্যাজেন্টো 2 এ, বেশিরভাগ ক্লাসে এই দুটি কনস্ট্রাক্ট ( __construct
এবং _construct
) পদ্ধতি রয়েছে। তাদের মধ্যে পার্থক্য কী?
উত্তর:
আমি পুরোপুরি নিশ্চিত নই যে এটি ম্যাজেন্টো 1 এবং ম্যাজেন্টো 2 এর মধ্যে পরিবর্তিত হয়েছে কিনা, সম্ভবত তাই না তবে আমি ম্যাজেন্টো 1 থেকে যা জানি তার সাথে যাব।
এর _construct
পরে ডাকা হবে__construct
পিএইচপি নেটিভ __construct
পদ্ধতিটি আপনার কোডটিতে ওভাররাইট বা ব্যবহার করা উচিত নয়। আপনি যদি কোনও শ্রেণি ব্যবহার শুরু করার সময় সুরক্ষিত উপায়ে কোড সম্পাদন করতে চান _construct
।
ম্যাজেন্টো __construct
কোনও শ্রেণীর জন্য যেমন কিছু নির্দিষ্ট মডেলের জন্য ডান ক্যাশে ট্যাগগুলি সংজ্ঞায়িত করার জন্য ব্যবহৃত হয় তার জন্য সবকিছু 'প্রস্তুত' তা নিশ্চিত করতে নেটিভ ব্যবহার করবেন ।
_Construct পদ্ধতি ছিল "Varien উদ্ভাবন" মডেল, সাহায্যকারী এবং ব্লক কিছু আরম্ভের যুক্তিবিজ্ঞান মোড়ানো করতেন।
সুতরাং এম 1 মডেল / ব্লক বা হেল্পার্সে নেটিভ __ কনস্ট্রাক্ট () পদ্ধতিটি পরিবর্তন বা পুনরায় ঘোষণা করা অস্বাভাবিক, যেহেতু আমরা সবসময় ম্যাজেন্টো কারখানাগুলি ব্যবহার করি। তবে এটি ব্যবহার সম্পর্কে কোনও সমস্যা / খারাপ-অনুশীলন নয় (যদি আপনি সামঞ্জস্যের যত্ন নেন)।
এম 2-তে _ কনস্ট্রাক্ট () পদ্ধতিটি এখনও কিছু অংশে উপস্থিত রয়েছে এবং একই উদ্দেশ্যে ব্যবহৃত হয়, তবে এখন (এম 2) সমস্ত ডিআই যুক্তি __ কনস্ট্রাক্টর () দ্বারা প্রয়োগ করা হয় যাতে আপনি কোড বেসে অনেকগুলি কনস্ট্রাকশন ঘোষণার সন্ধান পাবেন।
বিটিডব্লিউ Mage::getModel()
এম 2 এর মতো আর কারখানা নেই ।
অন্য কথায়:
_Construct () পদ্ধতি কিছু ক্লাসের Magento দ্বারা বাস্তবায়িত হয় এবং এটি ভিতরে স্বয়ংক্রিয়ভাবে বলা হচ্ছে __construct ফাংশন ঘোষণা, তাই যদি আপনি বস্তুর সৃষ্টি পরে কিছু কাপড় সম্পাদন করতে এটি ব্যবহার করতে পারেন একটি মডেল মত একটি Magento বর্গ ব্যাপ্ত হয়।
কোনও রিসোর্স মডেল বা মডেল ক্লাসে আপনাকে _construct()
সারণী এবং প্রাথমিক_কিটি সংজ্ঞায়িত করার জন্য একটি পদ্ধতি নির্ধারণ করতে হবে
অন্যদিকে __ কনস্ট্রাক্ট হ'ল পিএইচপি-র একটি স্থানীয় পদ্ধতি (সমস্ত ওও ভাষাগুলির একটি থাকে), __construct
আপনি যখনই কোনও বস্তুর তাত্ক্ষণিক ব্যবহার করেন তখনই ডাকা হয়। এখানেই শেষ
উদাহরণ:
Magento \ ফ্রেমওয়ার্ক \ মডেল \ ResourceModel \ AbstractResource
/**
* Abstract resource model
*/
abstract class AbstractResource
{
/**
* Main constructor
*/
public function __construct()
{
/**
* Please override this one instead of overriding real __construct constructor
*/
$this->_construct();
} ...
Magento \ ফ্রেমওয়ার্ক \ মডেল \ ResourceModel \ ডেটাবেস \ AbstractDb
/**
* Class constructor
*
* @param \Magento\Framework\Model\ResourceModel\Db\Context $context
* @param string $connectionName
*/
public function __construct(\Magento\Framework\Model\ResourceModel\Db\Context $context, $connectionName = null)
{
$this->transactionManager = $context->getTransactionManager();
$this->_resources = $context->getResources();
$this->objectRelationProcessor = $context->getObjectRelationProcessor();
if ($connectionName !== null) {
$this->connectionName = $connectionName;
}
parent::__construct();
}