php возвращаемые типы или перечисления? - PullRequest
0 голосов
/ 30 марта 2012

Я использую Codeignitor для программирования и из c #.это выглядит как вопрос новичка, но я хочу сделать что-то вроде этого.

У меня есть некоторые функции, которые возвращают некоторые значения:

Пример:

function Create_db()
{

//do something

      if (PassWordError) //some errors here it is password incorrect
       {
         return "PASS_ERROR";
       }

}

ив некоторых местах я использую вот так

$result = Create_db(); //assume that there are some problems and returned "PASS_ERROR"

, так что $result теперь является строкой,

есть ли что-то вроде ENUMS в php?или что-то подобное?

, чтобы я мог сделать что-то вроде этого:

if (passWordError)
{
  return $error->PasswordError();
}

Я предполагаю, что у меня могут быть и другие типы

как

Maximum_name_error,authenticationFailedError и т. Д.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 30 марта 2012

Хороший способ справиться с этим в CI - использовать языковой класс - http://codeigniter.com/user_guide/libraries/language.html

Файл Lang:

$lang = array (
'password_error'    =>      'The password you entered is incorrect.',
....

)

Контроллер:

   if ($PassWordError) //some errors here it is password incorrect
   {
     return $this->lang->line('password_error');
   }
2 голосов
/ 30 марта 2012

Типичным подходом для этого в PHP было бы использование констант класса:

class Something {
    const ERR_HI = 'hi';
    const ERR_FOOBAR = 'foobar';
}


//to use:
return Something::ERR_FOOBAR;

Хотя я бы подумал об использовании исключений.

0 голосов
/ 30 марта 2012

IMO, когда что-то пошло не так, вы должны добавить специальное (или нет) исключение и управлять им с помощью обработчика исключений в вашем приложении.

if (passWordError)
{
  throw new BadPasswordExeption($params, $you, $need);
}

Затем вы можете окружить его блоком try catch.

Вы можете найти больше информации здесь: http://php.net/manual/en/language.exceptions.extending.php

...