Sự khác biệt giữa getData ('name') và getName () là gì


7

Tôi đang sử dụng magento 1.8

Và tôi đang gặp vấn đề khi tôi sử dụng các phương pháp dưới đây

$product->getData('name');

$product->getName();

Chúng có giống nhau không, tôi chắc chắn rằng chúng trả về cùng một giá trị [câu trả lời]. Khi tôi đang sử dụng, tôi đang gặp lỗi

Fatal error: Call to a member function getData() on a non-object in

Vì vậy, tôi có thể biết sự khác biệt chính xác giữa hai chức năng này.

Cảm ơn bạn,

Câu trả lời:


11

Họ có thể giống nhau hoặc họ có thể khác nhau. Nó phụ thuộc vào đối tượng bạn đang sử dụng.

Nếu lớp bạn khởi tạo có chứa phương thức getName()thì kết quả bạn nhận được getNamegetData('name')có thể khác.
Bạn thậm chí có thể gặp lỗi nếu lớp không mở rộng Varien_Objectvà không có phương thức getData.

Đối với các lớp mở rộng Varien_Objectvà không chứa phương thức getName(), kết quả của 2 phương thức là như nhau.
Varien_Objectthực hiện phương thức __callđược gọi nếu một phương thức nhất định không tồn tại. Xem ở đây làm thế nào mã trông như thế nào .

Vì vậy, nó về cơ bản bản đồ tiếng gọi của bất kỳ phương pháp getSomethingHere()để getData('something_here'). Nó hoạt động tương tự cho các phương thức "giả" bắt đầu bằng set, hasuns.

Thêm chi tiết được cung cấp ở đây.


Giải thích tốt @ Marius, tôi sẽ cung cấp cho bạn upvote
Amit Bera

@AmitBera. Cảm ơn. tương tự cho bạn từ phía tôi.
Marius

4

lấy dữ liệu():

Trong hầu hết các trường hợp, đây là phương pháp bạn nên sử dụng. Trong hai tùy chọn, cái này thực sự nhanh hơn và hiệu quả hơn. Nếu bạn không có nhu cầu sửa đổi đầu ra và chỉ muốn hiển thị giá trị, hãy sử dụng getData (). Tuy nhiên, có những thuộc tính có thể không hoạt động đúng với getData () như giá sản phẩm. Mặc dù tôi chưa thử nghiệm nhưng getData ('name') rất có thể sẽ tạo ra kết quả khác với getName ().

getAttributionName ()

Bạn thực sự chỉ nên sử dụng phương pháp này nếu bạn cần ghi đè phương thức trong khối của mình để thêm chức năng vào cách hiển thị / định dạng dữ liệu. Magento cần thực hiện một số bước bổ sung trong việc hiển thị dữ liệu khi bạn sử dụng phương pháp này, vì vậy đây là một quá trình chậm hơn một chút so với hiển thị dữ liệu bằng getData (). Vì vậy, bằng cách sử dụng $ _product-> getName (), tôi có thể thêm một chức năng vào khối chế độ xem sản phẩm để sửa đổi dữ liệu trước khi xuất ra

Một số chi tiết: /programming/3541273/magento-getsku-or-getdata-sku-returns-empty- chuỗi


1
Tôi luôn sử dụng phương pháp thứ hai bởi vì bạn không bao giờ biết khi nào người khác sẽ muốn ghi đè. Đây là một phần quan trọng của làm việc hợp tác.
clockworkgeek

Bạn có thể vui lòng chỉnh sửa câu trả lời của tôi không
Amit Bera

Tôi không nghĩ cần phải thay đổi câu trả lời của bạn vì tôi chỉ thêm ý kiến ​​của mình.
clockworkgeek
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.