Menghindari komentar di Magento 2 lainnya
Jika Anda perlu berbagi beberapa nilai yang dihitung, letakkan perilaku penghitungan untuk memisahkan objek dan menyebutnya dari blok yang memerlukan nilai itu. Registri tidak disarankan karena keadaan global bisa berubah dan Anda tidak pernah yakin apa yang akan Anda dapatkan dari sana.
Apakah ada cara untuk membuat Obyek di Magento 2 dengan status tidak berubah? Menggunakan registri ( Magento\Framework\Registry
) tidak disarankan karena statusnya bisa berubah secara global (mungkin karena, meskipun register
metode ini tidak membiarkan Anda mengubah kunci yang ada, Anda dapat menghapus dan mengatur ulang kunci itu).
Namun - masalah yang sama ada untuk objek apa pun di Magento 2. Jika saya membuat objek
namespace Pulsestorm\Helloworld\Model;
use Magento\Framework\DataObject;
class ViewVars extends DataObject
{
}
Kemudian injeksi dependensi konstruktor otomatis memastikan bahwa siapa pun dapat mengambil objek yang dibagikan itu. Jika objek tidak dibagi, maka tampilan / blok tidak dapat mengambilnya.
Secara teori, kita bisa melakukan sesuatu seperti
namespace Pulsestorm\Helloworld\Model;
class ViewVars
{
protected $_data=false;
protected function setData($data)
{
if($_data)
{
throw new Exception("Immutable");
}
$this->_data = $data;
}
public function getData()
{
return $this->_data;
}
}
Tapi itu sepertinya banyak pekerjaan untuk tugas yang biasa seperti mengatur variabel individu untuk tampilan . Apakah ada cara yang lebih baik di Magento 2 untuk membuat objek data tidak berubah yang tidak saya sadari?
sumber
Jawaban:
Tidak, saat ini tidak ada cara yang lebih baik di Magento 2 untuk membuat objek data yang tidak dapat diubah. Anda dapat membuatnya, misalnya oleh generasi getter dan konstruktor dari antarmuka.
sumber