Как преобразовать этот синтаксис в обычный PHP, если еще - PullRequest
0 голосов
/ 24 августа 2011

Я использую проверку формы codeigniter. Для отображения ошибок формы он использует это

 $this->data['message'] = (validation_errors() ?
     validation_errors() : 
     ($this->auth_lib->errors() ? 
         $this->auth_lib->errors() : 
         $this->session->flashdata('message')))

Я не понимаю этот синтаксис. Я думаю, что это утверждение if else. Это очень трудно понять.

Может кто-нибудь преобразовать это в обычное выражение if else?

Потому что теперь я собираюсь изменить формат сообщения об ошибке:

$this->message->set_error($msg=array('Test 1','Test 2'));
$message=$this->message->get_message();
$this->data['message']=$message;  

Кто угодно, пожалуйста, упростите синтаксис. Спасибо.

Ответы [ 3 ]

6 голосов
/ 24 августа 2011

а?b: c == if (a) {b} else {c}

if (validation_errors())
{
    $this->data['message'] = validation_errors();
}
else if ($this->auth_lib->errors())
{
    $this->data['message'] = $this->auth_lib->errors();
}
else
{
    $this->data['message'] = $this->session->flashdata('message');
}
4 голосов
/ 24 августа 2011

$this->data['message'] = (validation_errors() ? validation_errors() : ($this->auth_lib->errors() ? $this->auth_lib->errors() : $this->session->flashdata('message')))

- это множественная троичная операция, эквивалентная:

if ( validation_errors() )
   $this->data['message'] = validation_errors();
elseif ( $this->auth_lib->errors() )
   $this->data['message'] = $this->auth_lib->errors();
else
   $this->data['message'] = $this->session->flashdata('message');
2 голосов
/ 24 августа 2011

Код, который вы разместили, использует троичные операторы .Они могут быть очень удобными, но иногда и запутанными, если вложить несколько из них.Вот эквивалент, написанный без троичных операторов ...

    if(validation_errors())
    {
        $this->data['message'] = validation_errors();
    }
    else
    {
        if($this->auth_lib->errors())
        {
            $this->data['message'] = $this->auth_lib->errors();
        }
        else 
        {
            $this->data['message'] = $this->session->flashdata('message');
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...