【问题标题】:Alternative to enum in PHP [duplicate]PHP中枚举的替代品[重复]
【发布时间】:2013-08-01 16:43:53
【问题描述】:

在 PHP 中使用枚举是否有替代方法?我只问是因为在 C# 中我有返回 emum 的方法,但在 PHP 中没有类似的东西存在。以下是虚构方法的一些可能的返回类型:

function login()
{
    // logged in
    // log in failed verify account
    // log in failed account suspended
    // log in failed account banned 
}

在 PHP 中执行此类操作的最佳方法是什么?

【问题讨论】:

  • 我可以建议你的最接近的是常量。您可以在类或全局范围内定义它们
  • XY 问题?忽略“枚举”你想做什么?
  • @Cole"Cole9"Johnson 不是重复,因为我说的是方法的返回类型。
  • 您只需返回常量变量。这将是一个整数。 return MY_CONSTANT;
  • @JamesJeffery 不,不幸的是,PHP 中不存在枚举等效项作为语言功能。您可以(不是真的)使用类常量或数组来模拟行为(如建议的答案)..

标签: php


【解决方案1】:

你可以使用类:

class LoginStatus
{
    const FailVerifyAccount = 0;
    const FailAccountSuspended = 1;
    const FailAccoutBanned = 2;
}

// how to use
$status = LoginStatus::FailVerifyAccount;

if ($status == LoginStatus::FailVerifyAccount) echo "Verify account";

或使用定义的常量:

define("LOGIN_STATUS_VERIFY_ACCOUNT", 0);
define("LOGIN_STATUS_ACCOUNT_SUSPENDED", 1);
define("LOGIN_STATUS_ACCOUNT_BANNED", 2);

// how to use
$status = LOGIN_STATUS_VERIFY_ACCOUNT;

if ($status == LOGIN_STATUS_VERIFY_ACCOUNT) echo "Verify account";

【讨论】:

    【解决方案2】:

    我通常使用 php 位域

    Improve this PHP bitfield class for settings/permissions?

    虽然该问题与权限有关,但可以轻松更改为使用帐户状态

    【讨论】:

      猜你喜欢
      • 2011-08-08
      • 1970-01-01
      • 2014-08-22
      • 2012-11-16
      • 2010-10-06
      • 2011-04-22
      • 2017-03-25
      • 2013-11-06
      相关资源
      最近更新 更多