За последние 24 часа нас посетили 18693 программиста и 1603 робота. Сейчас ищут 916 программистов ...

аргументы функции

Тема в разделе "PHP для новичков", создана пользователем Mortgoroth, 20 янв 2014.

  1. Mortgoroth

    Mortgoroth Новичок

    С нами с:
    14 янв 2014
    Сообщения:
    23
    Симпатии:
    0
    Не нашел однозначного ответа на вопрос:
    если функция объявлена с несколькими аргументами
    Код (Text):
    1. function test($arg1,$arg2,arg3){
    2. somecode...
    3. }
    то обязательно ли при обращении к ней передавать ВСЕ аргументы, если некоторые из них могут не использоваться?
    Вопрос возник после того, как я обратил внимание, что мои самописные функции для ldap по сути одинаковы, различаются только аргументами и вызываемыми встроенными функциями (ldap_add(), ldap_mod_add(), ldap_modify(), и т.п.)...
    То есть, при вызове функции надо ли указывать пустые атрибуты?
    Код (Text):
    1. test ($arg1, '','');
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Можешь дать значения по дефолту

    Код (PHP):
    1. function test($arg1='test',$arg2=true,arg3=false){
    2. somecode...
    3. }
    Но если напишешь на пр.

    Код (PHP):
    1. test('test',false);
    false будет относиться к $arg2 а arg3 примет значение по умолчанию.
     
  3. Mortgoroth

    Mortgoroth Новичок

    С нами с:
    14 янв 2014
    Сообщения:
    23
    Симпатии:
    0
    пример:
    Код (PHP):
    1. function ldp($basedn,$ident,$arg1,$arg2,$arg3){
    2.     global $ou, $base;
    3.     $ldaphost = "10.10.10.10";
    4.     $domain = "@domain.local";
    5.  
    6.     if ($ident == "ldpsearch"){
    7.         $srv_login = "ldap".$domain;
    8.         $srv_password = "ldap";
    9.     } else {
    10.         $srv_login = "Администратор".$domain;
    11.         $srv_password = "mEg@pAs$w0rD";
    12.     }
    13.  
    14.     $dc = ldap_connect($ldaphost);
    15.     ldap_set_option($dc, LDAP_OPT_PROTOCOL_VERSION, 3);
    16.     ldap_set_option($dc, LDAP_OPT_REFERRALS, 0);
    17.     if ($dc) {
    18.         $resq = ldap_bind($dc,$srv_login,$srv_password);
    19.  
    20.         switch($ident){
    21.             case "ldapsearch":
    22.                 $attr = array("department","cn","title","telephonenumber","mobile","homePhone","pager","ipphone","mail","description","info");
    23.                 $fltr1 = '(&(objectCategory=group)(cn='.$grp.'))';
    24.                 $attr1 = array("description");
    25.                 $result = ldap_search($dc,$arg2,$arg1,$attr);
    26.                 $res_grp = ldap_search($dc,$arg2,$fltr1,$attr1);
    27.                 ldap_sort($dc, $result, $arg3);
    28.                 $result_entries = ldap_get_entries($dc,$result);
    29.                 $resgrp = ldap_get_entries($dc,$res_grp);
    30.                 $errdc = ldap_error($dc);
    31.             break;
    32.             case "ldapadd":
    33.                 $radd = ldap_add($dc, $basedn, $arg1); 
    34.                 $errdc = ldap_error($dc);
    35.             break;
    36.             case "ldapaddgrp":
    37.                 $group_name = "CN=".$arg1.",".$ou.",".$base;
    38.                 $group_info['member'] = $basedn;
    39.                 ldap_mod_add($dc, $group_name, $group_info);
    40.                 $errdc = ldap_error($dc);
    41.             break;
    42.             case "ldapdel":
    43.                 ldap_delete($dc, $basedn);
    44.                 $errdc = ldap_error($dc);
    45.             break;
    46.         }
    47.     }
    48.     @ldap_unbind($dc);
    49. }
    и если надо добавить юзера в группу ldap, то
    Код (PHP):
    1. ldp($basedn, 'ldapaddgrp', $group, '', ''); 
    или сойдет
    Код (PHP):
    1. ldp($basedn, 'ldapaddgrp', $group);
    ?
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Что бы такое работало дай значение по умолчанию как я написал
    Какие значения должны быть у $arg2 $arg3 сам решай.

    Добавлено спустя 1 минуту 38 секунд:
    http://php.ru/manual/functions.arguments.html
     
  5. Mortgoroth

    Mortgoroth Новичок

    С нами с:
    14 янв 2014
    Сообщения:
    23
    Симпатии:
    0
    суть в том, что мне нужно обращаться к этой функции с разными значениями аргумента $ident, им я выбираю, что будет делать функция - добавлять пользователя в AD, удалять его оттуда, редактировать поля или менять членство в группах, именно от этого зависит, какие именно аргументы значимые.
     
  6. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    И что мешает обращаться?

    function test($arg1='test',$arg2=true,$arg3=false){
    аргументы примут значение по умолчанию если ты их явно не задашь при вызове функции. Если укажешь то аргументы примут значение которое ты передал.

    я еще ссылку привел, прочитай.
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Массив можно передать
     
  8. Mortgoroth

    Mortgoroth Новичок

    С нами с:
    14 янв 2014
    Сообщения:
    23
    Симпатии:
    0
    вот теперь понял, спасибо )