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
एक ही वस्तु को देखें?