Magento 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
채워, 또한 부모 블록 객체를 참조합니다. Magento의 목록 템플릿에서 사용중인 것을 볼 수 있습니다
#File: vendor/magento/module-catalog/view/frontend/templates/product/list.phtml
//...
$_productCollection = $block->getLoadedProductCollection();
$block
변수가 사용되지만 명시 적으로 정의되지 않은 곳 .
위에서 언급 한 차이점 외에 한 기술을 다른 기술보다 사용하는 데 차이점이 있습니까? 즉, 마 모두 $block
와 $this->currentBlock
같은 객체를 참조?