За последние 24 часа нас посетили 22103 программиста и 1672 робота. Сейчас ищут 1766 программистов ...

Передача параметров в функцию

Тема в разделе "PHP для профи", создана пользователем Danil005, 17 фев 2018.

  1. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Есть класс, как мне передать кроме обязательных функций, еще дополнительные, если необходимо?
    PHP:
    1. class Registration extends \Core {
    2.     public static function createAccount($login, $password, $email, ...$args) {
    3.  
    4.     }
    5. }
    Правильно ли будет это так?
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    https://secure.php.net/manual/ru/functions.arguments.php#functions.variable-arg-list
    --- Добавлено ---
    --- Добавлено ---
    PHP:
    1. function total_intervals($unit, DateInterval ...$intervals) {
     
    Danil005 нравится это.
  3. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Почему IDE ругается на это? В настройках стоит PHP 7.2 upload_2018-2-17_12-43-2.png
    --- Добавлено ---
    Или мне нужно как в C++/C# создавать такой класс?
     
  4. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Так Additional не существует? Тебе обязательно там тип указывать?
     
  5. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    В принципе нет, я понял смысл.
     
    denis01 нравится это.
  6. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    А еще можно вот так
    PHP:
    1. function total_intervals($unit, $val1 = null, $val2 = null) {
     
  7. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Этот вариант не подходит, так как здесь я подразумеваю, что можно дописать бесконечное кол-во переменных в функции, если это необходимо.
     
  8. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Но можно ведь..
    PHP:
    1. total_intervals('', [key=>value, key=>value, key=>value], [value, value])
    2. использовать args[0] в самой функции.. ну такое.. хотя зависит от задачи
     
    #8 nospiou, 5 мар 2018
    Последнее редактирование: 5 мар 2018
  9. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Вся соль состоит в том, что все эти переменные я объединяю таким образом:
    $date=func_get_args();
    $raw = array_shift($date);
    --- Добавлено ---
    Хотя в данном случае я так не делал. Впрочем я сделал так чисто ради красоты кода, дабы не загромождать функцию массивами:
    вот реализация
     
  10. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    PHP:
    1. Но можно ведь
    2. $x = new stdClass();
    3. $x->val1 = '1';
    4. $x->val2 = '2';
    5. $x->val3 = '3';
    6. func('', $x)
     
  11. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Я не любитель переменным присваивать классы, мне больше нравятся статические )
    Честно говоря, все это чисто эстетически и на вкус программиста, ведь кто как хочет, тот так и реализует)