如何在php中为函数定义带有常量变量的参数? [复制]

Posted

技术标签:

【中文标题】如何在php中为函数定义带有常量变量的参数? [复制]【英文标题】:How to define parameter with constant variables for function in php? [duplicate] 【发布时间】:2011-12-17 07:19:53 【问题描述】:

可能重复:php and Enums

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

<?php
function print($str, $num)...
.
.
.
print("omid",one);
print("omid",two);
?>

在这个例子中 $num 由常量变量组成:"one,two,three" 现在,如何实施呢? php中有枚举吗?

感谢您的宝贵时间

【问题讨论】:

【参考方案1】:

我假设您想要枚举类型:

试试这样的代码

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-spun.co.ukcode_templates/enums.php

【讨论】:

【参考方案2】:

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

function foobar($str, $num)
  // allowed values (whitelist)
  static $num_allowed = array('one', 'two', 'three');
  if(!in_array($num, $num_allowed))
    // error
  
  // ...

【讨论】:

【参考方案3】:

这是你想做的吗?

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

【讨论】:

【参考方案4】:

php 中没有枚举。 只需事先定义常量,然后使用它们。 如果您不想将它们定义为全局常量(在这种情况下您可能不应该),您可以在您的类中定义它们。

class myclass 
    const ONE = 1;
    const TWO = 2;
    const THREE = 3;

    public function testit() 

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


如果你尝试使用的常量没有定义,那么你会得到一个错误

【讨论】:

【参考方案5】:

你在找define()吗?

define('one',1);

This answer 也有一个很好的枚举 PHP 解决方案:

class DaysOfWeek

    const Sunday = 0;
    const Monday = 1;
    // etc.


var $today = DaysOfWeek::Sunday;

【讨论】:

以上是关于如何在php中为函数定义带有常量变量的参数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

LAMP--PHP实验常量和变量

PHP 常量PHP 变量全解析(超全局变量变量的8种数据类型等)

PHP常量

php变量定义方法

PHP define()的用法

如何按值传递sql函数参数