Bỏ qua một bình luận trong một Magento 2 khác
Nếu bạn cần chia sẻ một số giá trị được tính toán, hãy đặt hành vi tính toán để tách đối tượng và gọi nó từ các khối yêu cầu giá trị đó. Đăng ký không được khuyến khích vì đó là trạng thái có thể thay đổi toàn cầu và bạn không bao giờ chắc chắn mình sẽ nhận được gì từ đó.
Có cách nào để tạo Object trong Magento 2 với trạng thái bất biến không? Việc sử dụng sổ đăng ký ( Magento\Framework\Registry
) không được khuyến khích vì đó là trạng thái có thể thay đổi toàn cầu (có thể là do mặc dù register
phương thức này không cho phép bạn thay đổi khóa hiện tại, nhưng bạn có thể hủy đặt lại và sau đó đặt lại khóa đó).
Tuy nhiên - vấn đề tương tự tồn tại với bất kỳ đối tượng nào trong Magento 2. Nếu tôi tạo một đối tượng
namespace Pulsestorm\Helloworld\Model;
use Magento\Framework\DataObject;
class ViewVars extends DataObject
{
}
Sau đó, trình tự phụ thuộc hàm tạo tự động đảm bảo rằng bất kỳ ai cũng có thể lấy đối tượng chia sẻ đó. Nếu đối tượng không được chia sẻ, thì khung nhìn / khối không thể lấy nó.
Về lý thuyết, chúng ta có thể làm một cái gì đó như
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;
}
}
Nhưng điều đó có vẻ như rất nhiều công việc cho một nhiệm vụ phổ biến như đặt các biến riêng lẻ cho một khung nhìn . Có cách nào tốt hơn trong Magento 2 để tạo các đối tượng dữ liệu bất biến mà tôi không biết?