Cách tốt nhất để thay thế chức năng chết?


7

Tôi có mã Magento sau:

protected function _sendUploadResponse($fileName, $content, $contentType='application/octet-stream')
{
    $response = $this->getResponse();
    $response->setHeader('HTTP/1.1 200 OK','');
    $response->setHeader('Pragma', 'public', true);
    $response->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true);
    $response->setHeader('Content-Disposition', 'attachment; filename='.$fileName);
    $response->setHeader('Last-Modified', date('r'));
    $response->setHeader('Accept-Ranges', 'bytes');
    $response->setHeader('Content-Length', strlen($content));
    $response->setHeader('Content-type', $contentType);
    $response->setBody($content);
    $response->sendResponse();
    die;
}

Khi tôi cố gắng xác thực mã của mình, tôi gặp lỗi này: Việc sử dụng cấu trúc ngôn ngữ die không được khuyến khích.

Những gì tôi có thể làm hoặc cách tốt nhất để thay thế chức năng chết.


Để đầy đủ thông tin: Bạn đang xác nhận mã của mình ở đâu / như thế nào?
7ochem

Câu trả lời:


8

Nó phụ thuộc, nơi mã này là:

  1. Trong một bộ điều khiển hoặc người quan sát sau công văn?

    Sau đó, không cần phải gửi phản hồi và thoát một mình, Magento sẽ chăm sóc điều đó. Vì vậy, thay vì

    $response->sendResponse();
    die;
    

    trở về từ hành động hoặc người quan sát:

    return;

    Nếu ý định của bạn là ngăn chặn người quan sát gửi công văn (trong bộ điều khiển), bạn có thể thực hiện điều đó bằng cách gọi thêm:

    $this->setFlag('', self::FLAG_NO_POST_DISPATCH, 1);
  2. Trong một quan sát trước công văn?

    Tương tự như trên, bạn sẽ muốn ngăn bộ điều khiển thực tế được gửi đi:

    $controller->setFlag('', self::FLAG_NO_DISPATCH, 1);

    Và có lẽ các quan sát viên gửi bài cũng:

    $controller->setFlag('', self::FLAG_NO_POST_DISPATCH, 1);
  3. Bất cứ nơi nào khác?

    Đó là một vấn đề. Xử lý yêu cầu và phản hồi là công việc của bộ điều khiển (và các quan sát viên gắn liền với các sự kiện liên quan đến bộ điều khiển). Vì vậy, cách tốt nhất sẽ là tìm ra cách di chuyển mã đó.

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.