Magento 2 में, $thisचर अब किसी टेम्प्लेट के ब्लॉक ऑब्जेक्ट को संदर्भित नहीं करता है। यह एक टेम्पलेट वर्ग को संदर्भित करता है
Magento\Framework\View\TemplateEngine\Php
हालाँकि, इस टेम्प्लेट क्लास में एक pststhrough __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आबादी वाला एक चर नाम है , जो मूल ब्लॉक ऑब्जेक्ट को भी संदर्भित करता है। आप इसका उपयोग Magento के सूची टेम्पलेट में देख सकते हैं
#File: vendor/magento/module-catalog/view/frontend/templates/product/list.phtml
//...
$_productCollection = $block->getLoadedProductCollection();
जहां $blockचर का उपयोग किया जाता है, लेकिन कभी भी स्पष्ट रूप से परिभाषित नहीं किया जाता है।
ऊपर वर्णित अंतरों के अलावा, क्या एक तकनीक का दूसरे पर उपयोग करने में कोई अंतर है? अर्थात दोनों को करें $blockऔर $this->currentBlockएक ही वस्तु को देखें?