如何在PHP中为函数定义带有常量变量的参数?


How to define parameter with constant variables for function in php?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
PHP and Enums

我想创建一个有几个参数的函数,其中一个参数有几个常量变量。例如:

1
2
3
4
5
6
7
8
<?php
function print($str, $num){...}
.
.
.
print("omid",one);
print("omid",two);
?>

在这个例子中,$num由常量变量组成:"1,2,3"现在,如何实现它?PHP中有枚举吗?

谢谢你的时间


PHP中没有枚举。只需事先定义常量,然后使用它们。如果不想将它们定义为全局常量(在本例中可能不需要),可以在类内定义它们。

1
2
3
4
5
6
7
8
9
10
11
12
class myclass {
    const ONE = 1;
    const TWO = 2;
    const THREE = 3;

    public function testit() {

        echo("omid". self::ONE);
        echo ("omid". self::TWO);
    }

}

如果您尝试使用的常量未定义,则会出现错误。


你在找define()吗?

1
define('one',1);

这个答案对于枚举也有一个很好的PHP解决方案:

1
2
3
4
5
6
7
8
class DaysOfWeek
{
    const Sunday = 0;
    const Monday = 1;
    // etc.
}

var $today = DaysOfWeek::Sunday;


我假设您需要枚举类型:

试试这样的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class DAYS
{
   private $value;
   private function __construct($value)
   {
      $this->value = $value;
   }
   private function __clone()
   {
      //Empty
   }
   public static function MON() { return new DAYS(1); }
   public static function TUE() { return new DAYS(2); }
   public static function WED() { return new DAYS(3); }
   public function AsInt() { return $this->value; }
}

我有一个网页,您可以使用它来生成代码:http://well-spin.co.ukcode_templates/enums.php


没有枚举,如果只需要一个函数,可以这样做:

1
2
3
4
5
6
7
8
function foobar($str, $num){
  // allowed values (whitelist)
  static $num_allowed = array('one', 'two', 'three');
  if(!in_array($num, $num_allowed)){
    // error
  }
  // ...
}

这是你想做的吗?

1
2
3
$nums = array(1 => 'one', 2 => 'two', 'three');
echo $nums[1]; // one
echo $nums[3]; // three