从它的字符串名称中获取PHP常量

时间:2011-06-21 19:37:15

标签: php

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

PHP具有LDAP_OPT_PROTOCOL_VERSIONLDAP_OPT_HOST_NAMLDAP_OPT_TIMELIMIT等常量,用于以下函数:

ldap_set_option ( $myLdapConnection, LDAP_OPT_PROTOCOL_VERSION, 3 )

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


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

然后我想做以下类型的循环


foreach( $options as $option => $value ){
      ldap_set_option ( $myLdapConnection, $option, $value );
}

但是,如果我尝试这个,我会收到一个错误,指出该函数需要一个long,而不是一个字符串。我怎么能超越这个?

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

但是要明确的是,如果应该有常量重叠,例如当我定义自己的常量时,那么它可能是一个问题。

3 个答案:

答案 0 :(得分:15)

您可以使用constant($option)

答案 1 :(得分:5)

为什么不像这样构建你的数组:

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

如果由于某种原因PHP更改(例如,新的PHP版本)您使用​​的任何常量的值,也可以保持其正常工作。

答案 2 :(得分:1)

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

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

请记住,只有在实际常量的值没有重叠的情况下,这才有效;这将导致数组空间发生冲突。