[CodeIgniter] 클래스를 사용하여 양식의 값을 자동으로 가져옵니다.

13551 단어 PHPCodeIgniter
PHP 클래스에 선언되지 않은 속성도 숫자 값을 대입할 수 있습니다.만약 이 점을 이용한다면 형식적으로 발송된 값을 자동으로 얻는 메커니즘을 세울 수 있다.

선언되지 않은 속성 사용


샘플 클래스 정의


libraries 폴더에 다음 구조기만 있는 클래스를 정의합니다.
class Dummy
{
    public function __construct($config = array())
    {
    }
}

시용반


위의 클래스를 실례화하고 적당한 속성 값을 설정한 다음 브라우저에서 확인하십시오.
function sample_out()
{
    $_form = new Dummy();
    $_form->id = 12345;

    echo '$_form->id = '.$_form->id.'<br/>';
}
대입 시 오류가 발생하지 않으며 브라우저도 다음과 같이 출력됩니다.

"APHP Error was encountered"가 표시될 때까지 이전 기능에서 선언되지 않고 대입되지 않은 값의 속성을 출력하도록 수정되었습니다.
function sample_out()
{
    $_form = new Dummy();
    $_form->id = 12345;

    echo '$_form->id = '.$_form->id.'<br/>';
    echo '$_form->name = '.$_form->name.'<br/>';
}

클래스를 사용하여 창 값 얻기


양식 준비


다음 형식을 준비합니다.
sample_form.php
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <title>サンプルフォーム</title>
</head>
<body>
  <div id="container">
    <form name="f" id="f" method="post" action="">
      TEXT_1 : <input type="text" name="_text_1" id="_text_1" value="" /><br/>
      TEXT_2 : <input type="text" name="_text_2" id="_text_2" value="" /><br/>
      TEXT_3 : <input type="text" name="_text_3" id="_text_3" value="" /><br/>
      <br/>
      <input type="submit" value="送信" /><br/>
    </form>
  </div>
</body>
</html>

컨트롤러에 표시


디렉터에 위의 뷰를 표시합니다.
function sample_out()
{
  $this->load->view("sample_form");
}

준비반


창이 표시되었기 때문에 창을 처리하는 클래스를 만들고 이전 클래스에서 실례화합니다.
SampleForm.php
class SampleForm
{
  protected $_CI;

  public function __construct($config = array())
  {
    $this->_CI =& get_instance();
    $this->set_post();
  }

  public function set_post()
  {
    $post_param = $this->_CI->input->post();

    if($post_param && count($post_param) > 0)
    {
      foreach($post_param as $key => $value)
      {
        $this->{$key} = $value;
      }
    }
    return $this;
  }
}
방금 기능 수정.동시에 화면 출력 창의 세 변수를 출력합니다.
function sample_out()
{
  class_exists('SampleForm') OR require APPPATH.'libraries/SampleForm.php';

  $_form = new SampleForm();

  if(isset($_form->_text_1))    echo $_form->_text_1.'<br/>';
  if(isset($_form->_text_2))    echo $_form->_text_2.'<br/>';
  if(isset($_form->_text_3))    echo $_form->_text_3.'<br/>';

  $this->load->view("sample_form");
}

창 보내기


초기 디스플레이에서 이전과 같기 때문에 항목에 값을 입력한 후 발송 단추를 누르십시오.

양식 전송 결과


발송 후 속성을 볼 수 있기 때문에 다음과 같은 내용을 표시합니다(위 세 줄의 창 값 획득).

최후


창 변수 속성을 미리 설명하지 않고 창 값을 얻을 수 있습니다.이 종류의 대상으로view의 변수를 바꾸면 초기 디스플레이와 오류 시 다시 표시하는 등은 간단할 수 있습니다. (다음 방법을 준비해야 할 수도 있습니다.)
public function getValue($_key)
{
    return isset($this->{$_key}) ? $this->{$_key} : '';
}

좋은 웹페이지 즐겨찾기