从中获取一个PHP常量';s字符串名

从中获取一个PHP常量';s字符串名,php,Php,我正在创建一个小的LDAP连接类,但这通常适用于PHP常量 PHP有一些常量,如LDAP\u OPT\u PROTOCOL\u VERSION,LDAP\u OPT\u HOST\u NAM,以及LDAP\u OPT\u TIMELIMIT,用于以下函数: ldap\u set\u选项($myldap连接,ldap\u OPT\u协议版本,3) 在我的LDAP连接类中,我希望能够像这样在数组中传递选项 array( 'LDAP_OPT_PROTOCOL_VERSION' => 3, 'LDA

我正在创建一个小的LDAP连接类,但这通常适用于PHP常量

PHP有一些常量,如
LDAP\u OPT\u PROTOCOL\u VERSION
LDAP\u OPT\u HOST\u NAM
,以及
LDAP\u OPT\u TIMELIMIT
,用于以下函数:

ldap\u set\u选项($myldap连接,ldap\u OPT\u协议版本,3)

在我的LDAP连接类中,我希望能够像这样在数组中传递选项


array( 
'LDAP_OPT_PROTOCOL_VERSION' => 3,
'LDAP_OPT_TIMELIMIT' => 1000
);
然后我想做以下类型的循环


foreach( $options as $option => $value ){
      ldap_set_option ( $myLdapConnection, $option, $value );
}
但是,如果我尝试这样做,我会得到一个错误,即函数需要的是长字符串,而不是字符串。我怎样才能度过这一关

编辑:我意识到巴特是对的。我会这样做的。它甚至会更快,因为不会涉及字符串


不过,需要明确的是,如果常数之间存在重叠,例如在我定义自己的常数时,那么这可能是一个问题。

您可以使用为什么不这样构建阵列:

array( 
    LDAP_OPT_PROTOCOL_VERSION => 3,
    LDAP_OPT_TIMELIMIT => 1000
);

如果由于任何原因PHP更改了(例如新的PHP版本)您使用的任何常量的值,它也会保持工作状态。

您可以创建数组,以便存储实际常量,而不是常量的字符串表示形式。像这样:

array( 
LDAP_OPT_PROTOCOL_VERSION => 3,
LDAP_OPT_TIMELIMIT => 1000
);

请记住,只有在实际常数的值没有重叠的情况下,这才有效;这将在您的数组空间中造成冲突。

@Jerry Saravia这回答了您的问题,但我建议@Bart S.的解决方案满足您的需要。我怀疑它们是否应该重叠,可以传递给
ldap\u set\u option()
的任何此类常量都必须是唯一的,为了让函数能够区分它们!我不想这样做,因为php可能会将相同的值分配给它的某些内容。假设有两个常数,常数1和常数2。由于某些原因,它们都被赋值为1。在你的例子中,我会得到一个奇怪的bug,因为这是我在数组中要做的事情(1=>3,1=>1000)。看到问题了吗?@Jerry如果是这样的话,问题仍然会存在,因为对于同一个选项,您将
ldap\u set\u选项
两次。只要它们的目的地相同,标志就应该不同