【问题标题】:php return types or enums? [duplicate]php 返回类型或枚举? [复制]
【发布时间】:2012-04-14 02:09:23
【问题描述】:

我正在使用 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 现在是字符串,

php 中有没有类似 ENUMS 的东西?或者类似的东西?

这样我就可以做这样的事情:

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

我假设我也可以有一些其他类型

喜欢

Maximum_name_error,authenticationFailedError

谢谢。

【问题讨论】:

    标签: php codeigniter enums weblogic return


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      IMO,当出现问题时,您应该抛出一个自定义(或不​​)异常,并在您的应用程序中使用异常处理程序来管理它。

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

      然后你可以用 try catch 块包围它。

      您可以在这里找到更多信息:http://php.net/manual/en/language.exceptions.extending.php

      【讨论】:

      • 是的...但情况不同,几乎所有的回报都不例外:)
      【解决方案3】:

      在 PHP 中执行此操作的典型方法是使用类常量:

      class Something {
          const ERR_HI = 'hi';
          const ERR_FOOBAR = 'foobar';
      }
      
      
      //to use:
      return Something::ERR_FOOBAR;
      

      虽然我会考虑改用异常。

      【讨论】:

      • 如果您可以轻松地进行逻辑检查,那么用户输入无效密码真的是一种特殊情况吗?
      • 非常感谢,也欢迎例外,但const更可取。
      • @CharlesSprayberry 你是对的,这取决于具体情况。然而,看起来他有一个初始化数据库的例程,并假设你的配置密码无效,所以看起来你可能想在这种情况下抛出。
      • @JaniHartikainen define 怎么样?我在 codeignitor 上使用了 constant.php 配置文件,这样我就可以在整个站点中使用它。
      • @DileepDil 我想你也可以使用定义。如果返回值特定于某个类,我可能会使用类常量,但如果你有某种共享的返回值或其他东西,那么是的。
      猜你喜欢
      • 1970-01-01
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      • 2023-02-21
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 2018-08-30
      相关资源
      最近更新 更多