2012-03-30 2 views
0

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

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

Пример:

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 и т.д.

Спасибо.

+1

Возможный дубликат [PHP и Enums] (http://stackoverflow.com/questions/254514/php-and-enums) – cspray

ответ

2

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

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


//to use: 
return Something::ERR_FOOBAR; 

Хотя я бы рассмотреть возможность использования исключений вместо этого.

+0

Действительно ли пользователь вводит неверный пароль в исключительной ситуации, если это то, что вы можете легко сделать логическую проверку? – cspray

+0

Большое вам спасибо, исключения также приветствуются, но 'const' являются более предпочтительными. – Red

+0

@CharlesSprayberry, вы правы, это зависит от ситуации. Тем не менее, похоже, что у него была обычная процедура для инициализации БД и при условии, что у вас есть неверный пароль для конфигурации, поэтому он выглядел так, как будто вы могли бы бросить в этом случае. –

0

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

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

Тогда вы можете объединить его с помощью блока catch catch.

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

+0

да ... но дело другое, почти все возвращения не исключение :) – Red

2

Хороший способ борьбы с этим в 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'); 
    } 
Смежные вопросы