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 に答える