1

我正在寻找什么是 php 语言的更好实践的答案。我有以下一段代码。将参数列表发送到输出函数以进行显示是否更好,或者我应该形成一个数组以供输出函数显示。如果您有意见或答案,请提供任何支持您的答案的文档,以便包括我自己在内的任何人将来都可以查看此材料。我已经包含了输出函数来显示我如何将消息输出到浏览器但是我正在考虑使用 flashdata 进行显示但是什么让我想知道当我有不同类型的消息(例如信息、警告、成功消息)时我将如何使用它。

if (!$this->form_is_valid())
{
    $this->output('The form did not validate successfully!', 
                    'Form Not Validated', 'Error');
    return;
}

public function output($message, $title, $status)
{
    switch (strtoupper($status))
    {
        default:
        case 'ERROR':
            $status = 'Error';
            break;
        case 'NOTICE':
            $status = 'Notice';
            break;
        case 'SUCCESS':
            $status = 'Success';
            break;
    }
    $this->output->set_content_type('application/json')->set_output(json_encode(array
        (
        'output_status' => $status,
        'output_title' => $title,
        'output_message' => $message)));
}
4

1 回答 1

2

更好的选择是将对象传递给输出方法:

<?php
interface Message
{
  public function getContents();
  public function getSummary();
  public function getType();
}

abstract class AbstractMessage() implements Message
{
  protected $type;
  protected $contents;
  protected $summary;

  protected function __construct($contents, $summary) {
    $this->contents = $contents;
    $this->summary = $summary;
  }

  public function getContents() {
    return $this->contents;
  }

  public function getSummary() {
    return $this->summary;
  }

  public function getType() {
    return $this->type;
  }
}

class ErrorMessage() extends AbstractMessage
{
  public function __construct($contents, $summary) {
    parent::__construct($contents, $summary);
    $this->type = 'Error';
  }
}

class InfoMessage() extends AbstractMessage
{
  ...
}

...

if (!$this->form_is_valid())
{
  $this->output(new ErrorMessage(
    'The form did not validate successfully!', 
    'Form Not Validated',
    'Error'
  ));
  return;
}
于 2013-07-26T06:23:26.877 回答