ম্যাজেন্টো 2-এ, $this
ভেরিয়েবলটি আর কোনও টেমপ্লেটের ব্লক অবজেক্টে রেফার করে না। এটি একটি টেম্পলেট শ্রেণি বোঝায়
Magento\Framework\View\TemplateEngine\Php
যাইহোক, এই টেমপ্লেট শ্রেণীর একটি পাসথ্রু __call
পদ্ধতি রয়েছে
#File: vendor/magento/framework/View/TemplateEngine/Php.php
public function __call($method, $args)
{
return call_user_func_array([$this->_currentBlock, $method], $args);
}
যা নিশ্চিত করে যে কোনও পদ্ধতির কলগুলি এটিকে আসল ব্লকের মাধ্যমে করে। আপনি phtml
টেমপ্লেটগুলি থেকে সুরক্ষিত পদ্ধতিগুলিকে কেন কল করতে পারবেন না তা এটিও ব্যাখ্যা করে ।
এই যদিও ছাড়াও, যে (আমার ধারণা?) টেমপ্লেট নামে একটি পরিবর্তনশীল হয়েছে $block
জনবহুল, যা এছাড়াও পিতা বা মাতা ব্লক বস্তুর বোঝায়। আপনি এটি ম্যাজেন্টোর তালিকার টেম্পলেটটিতে ব্যবহারে দেখতে পারেন
#File: vendor/magento/module-catalog/view/frontend/templates/product/list.phtml
//...
$_productCollection = $block->getLoadedProductCollection();
যেখানে $block
ভেরিয়েবল ব্যবহার করা হয় তবে কখনও স্পষ্টভাবে সংজ্ঞায়িত হয় না।
উপরে বর্ণিত পার্থক্যগুলি বাদে অন্য একটি কৌশল ব্যবহারের মধ্যে কী কোনও পার্থক্য রয়েছে? অর্থাত দো উভয় $block
এবং $this->currentBlock
একই বস্তুর পড়ুন?