我正在创建一个小的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 );
}
但是,如果我尝试这个,我会收到一个错误,指出该函数需要一个long,而不是一个字符串。我怎么能超越这个?
编辑:巴特是对的,我意识到。我会这样做的。它甚至会更快,因为不会涉及到字符串。但是要明确的是,如果应该有常量重叠,例如当我定义自己的常量时,那么它可能是一个问题。
答案 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
);
请记住,只有在实际常量的值没有重叠的情况下,这才有效;这将导致数组空间发生冲突。