Не нашел однозначного ответа на вопрос: если функция объявлена с несколькими аргументами Код (Text): function test($arg1,$arg2,arg3){ somecode... } то обязательно ли при обращении к ней передавать ВСЕ аргументы, если некоторые из них могут не использоваться? Вопрос возник после того, как я обратил внимание, что мои самописные функции для ldap по сути одинаковы, различаются только аргументами и вызываемыми встроенными функциями (ldap_add(), ldap_mod_add(), ldap_modify(), и т.п.)... То есть, при вызове функции надо ли указывать пустые атрибуты? Код (Text): test ($arg1, '','');
Можешь дать значения по дефолту Код (PHP): function test($arg1='test',$arg2=true,arg3=false){ somecode... } Но если напишешь на пр. Код (PHP): test('test',false); false будет относиться к $arg2 а arg3 примет значение по умолчанию.
пример: Код (PHP): function ldp($basedn,$ident,$arg1,$arg2,$arg3){ global $ou, $base; $ldaphost = "10.10.10.10"; $domain = "@domain.local"; if ($ident == "ldpsearch"){ $srv_login = "ldap".$domain; $srv_password = "ldap"; } else { $srv_login = "Администратор".$domain; $srv_password = "mEg@pAs$w0rD"; } $dc = ldap_connect($ldaphost); ldap_set_option($dc, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($dc, LDAP_OPT_REFERRALS, 0); if ($dc) { $resq = ldap_bind($dc,$srv_login,$srv_password); switch($ident){ case "ldapsearch": $attr = array("department","cn","title","telephonenumber","mobile","homePhone","pager","ipphone","mail","description","info"); $fltr1 = '(&(objectCategory=group)(cn='.$grp.'))'; $attr1 = array("description"); $result = ldap_search($dc,$arg2,$arg1,$attr); $res_grp = ldap_search($dc,$arg2,$fltr1,$attr1); ldap_sort($dc, $result, $arg3); $result_entries = ldap_get_entries($dc,$result); $resgrp = ldap_get_entries($dc,$res_grp); $errdc = ldap_error($dc); break; case "ldapadd": $radd = ldap_add($dc, $basedn, $arg1); $errdc = ldap_error($dc); break; case "ldapaddgrp": $group_name = "CN=".$arg1.",".$ou.",".$base; $group_info['member'] = $basedn; ldap_mod_add($dc, $group_name, $group_info); $errdc = ldap_error($dc); break; case "ldapdel": ldap_delete($dc, $basedn); $errdc = ldap_error($dc); break; } } @ldap_unbind($dc); } и если надо добавить юзера в группу ldap, то Код (PHP): ldp($basedn, 'ldapaddgrp', $group, '', ''); или сойдет Код (PHP): ldp($basedn, 'ldapaddgrp', $group); ?
Что бы такое работало дай значение по умолчанию как я написал Какие значения должны быть у $arg2 $arg3 сам решай. Добавлено спустя 1 минуту 38 секунд: http://php.ru/manual/functions.arguments.html
суть в том, что мне нужно обращаться к этой функции с разными значениями аргумента $ident, им я выбираю, что будет делать функция - добавлять пользователя в AD, удалять его оттуда, редактировать поля или менять членство в группах, именно от этого зависит, какие именно аргументы значимые.
И что мешает обращаться? function test($arg1='test',$arg2=true,$arg3=false){ аргументы примут значение по умолчанию если ты их явно не задашь при вызове функции. Если укажешь то аргументы примут значение которое ты передал. я еще ссылку привел, прочитай.