从其字符串名取回PHP常量

问题描述

| 我正在创建一个小的LDAP连接类,但这通常适用于PHP常量。 PHP具有常量
LDAP_OPT_PROTOCOL_VERSION
LDAP_OPT_HOST_NAM
LDAP_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 );
}
但是,如果尝试此操作,则会收到一条错误消息,提示函数需要一个长字符串,而不是字符串。我该如何克服? 编辑:巴特是对的,我知道。我将以这种方式进行。它甚至会更快,因为不会涉及任何字符串。 不过要明确一点,如果常量应该重叠(例如,当我定义自己的常量时),则可能是一个问题。     

解决方法

        为什么不这样构建数组:
array( 
    LDAP_OPT_PROTOCOL_VERSION => 3,LDAP_OPT_TIMELIMIT => 1000
);
如果由于任何原因PHP更改了您使用的任何常量的值(例如,新的PHP版本),也可以使其保持工作状态。     ,        你可以用
constant($option)
    ,        您可以创建数组,以便存储实际常量,而不是常量的字符串表示形式。像这样:
array( 
LDAP_OPT_PROTOCOL_VERSION => 3,LDAP_OPT_TIMELIMIT => 1000
);
请记住,这仅在实际常量的值没有重叠的情况下才有效。这会在您的数组空间中引起冲突。