In Magento 2, la $thisvariabile non fa più riferimento all'oggetto blocco di un modello. Si riferisce a una classe modello
Magento\Framework\View\TemplateEngine\Php
Tuttavia, questa classe di modelli ha un __callmetodo passthrough
#File: vendor/magento/framework/View/TemplateEngine/Php.php
public function __call($method, $args)
{
return call_user_func_array([$this->_currentBlock, $method], $args);
}
Che assicurano che qualsiasi chiamata di metodo arrivi al blocco effettivo. Questo spiega anche perché non è possibile chiamare metodi protetti da phtmlmodelli.
Oltre a ciò, tuttavia, ogni modello (penso?) Ha una variabile denominata $blockpopolata, che si riferisce anche all'oggetto blocco padre. Puoi vederlo in uso nel modello di elenco di Magento
#File: vendor/magento/module-catalog/view/frontend/templates/product/list.phtml
//...
$_productCollection = $block->getLoadedProductCollection();
dove $blockviene utilizzata la variabile, ma mai definita esplicitamente.
Oltre alle differenze sopra menzionate, c'è qualche differenza tra l'uso di una tecnica rispetto all'altra? cioè fare entrambi $blocke $this->currentBlockfare riferimento allo stesso oggetto?