2012-03-30 152 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 2012-03-30 11:37:43

回答

2

A爲PHP做這個典型的方法是使用類常量:

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


//to use: 
return Something::ERR_FOOBAR; 

雖然我會考慮使用異常,而不是。

+0

用戶輸入無效密碼真的是一種特殊情況,如果它是你可以輕鬆地做一個邏輯檢查? – cspray 2012-03-30 11:38:48

+0

非常感謝你,異常也是受歡迎的,但'const'更可取。 – Red 2012-03-30 11:49:19

+0

@CharlesSprayberry你是對的,它取決於情況。但是,看起來他有一個例程來初始化一個數據庫,並假設你有一個無效的配置密碼,所以看起來你可能想要拋出這種情況。 – 2012-03-31 11:04:54

0

國際海事組織,當出現問題時,你應該拋出一個自定義(或不​​)的exeption和管理它與應用程序中的exeption處理程序。

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

然後你可以用try catch塊包圍它。

你可以在這裏找到更多的信息:http://php.net/manual/en/language.exceptions.extending.php

+0

是啊...但情況是不同的,幾乎所有的回報都不是例外:) – Red 2012-03-30 11:59:01

2

一個很好的方法來處理這CI是使用語言類 - http://codeigniter.com/user_guide/libraries/language.html

朗文件:

$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'); 
    }