Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Функции и их аргументы (для начинающих)
Форумы портала PHP.SU » Разное » Обсуждение статей » Функции и их аргументы (для начинающих)

Страниц (1): [1]
 

1. Panoptik - 06 Августа, 2015 - 18:34:40 - перейти к сообщению
аналогия из жизни

представим что функция - это соковыжималка
она такая себе довольно конкретная, пылится на полочке, попросту говоря существует как и объявленная функция. пока мы ее не трогаем, нам абсолютно все равно что она делает и как

когда доходит до дела (нам захотелось сока) мы можем вспомнить об этом замечательном приборе и достать его из полочки и применить (вызвать функцию) или пойти в магазин, и купить ее, если у нас ее нет (написать функцию) и после все равно использовать по назначению (вызвать)

мы открываем инструкцию (мануал) и читаем что во входное отверстие этого прибора нужно подавать фрукты/овощи (аргументы), а из выходного отверстия будет течь сок (результат)
так вот результат как раз очень сильно будет зависить от того что именно мы подадим на вход
если кинем яблоки - получится яблочный сок, помидоры - томатный

говоря языком программирования
PHP:
скопировать код в буфер обмена
  1.  
  2. // функция соковыжималка
  3. function juicer($fruit) {
  4.     // делает что-то с входным аргументом (фруктом)
  5.     // to do something with fruit and receive juice
  6.     // пусть "что-то" будет делением на 1000
  7.     // let "something" be division to 1000
  8.      // на выходе получается сок
  9.     // juice
  10.     return $fruit/1000;
  11. }
  12. // если мы вставим на вход помидор, очевидно получим томатный сок
  13. $tomatoJuice = juicer($tomato);
  14. // если аргумент будет яблоко, то конечно же и сок будет яблочным
  15. $appleJuice = juicer($apple);
  16.  
  17. // а какой сок получится из морковки
  18. ??? = juicer($carrot);
  19.  
  20. // правильно! персиковый
  21.  


обычно в функцию мы закладываем некоторые действия которые приведут к определенному результату. функция может требовать или не требовать аргумента

например часы - возвращают время. им не надо ничего подавать на вход, они самодостаточны и возвращают вполне определенный результат исходя из их внутреннего состояния

с другой стороны функция будильник требует аргумент (время срабатывания), на выходе получим звонок в определенное время

вобщем аргумент - это то от чего будет зависить результат

так же аргументов может быть потребовано несколько, например мультиварка, может принимать одновременно много разных ингридиентов, делать с ними простую манипуляцию (подогрев) и на выход выдавать блюдо, которое зависит от входных ингридиентов

так же в контексте приборов аргументами можно называть и нажатые нами кнопки, например таймер времени в микроволновке - аргумент, мощность - аргумент, исходя из этих аргементов вы получите результат (боле разогретое блюдо за то же время при повышенной мощности, или же при более длительном разогреве)

так что аргументы - они повсюду и закладывают аргументы те кто придумывает функционал прибора (функцию в программировании).

рассмотрим пример функции вывода приветствия

эта функция всегда будет выдавать "Привет друг" не смотря ни на что, говорят что это хардкод, то есть определенные условия жестко записаны и не поддаются влиянию извне
PHP:
скопировать код в буфер обмена
  1. function a() {
  2.   echo 'Привет друг';
  3. }
  4. a(); // Привет друг
  5. a(); // Привет друг
  6.  


добавляя аргумент, мы можем здороваться уже с кем угодно, задавая цель в аргументе
PHP:
скопировать код в буфер обмена
  1. function a($name) {
  2.   echo 'Привет ' . $name;
  3. }
  4. a('друг'); // Привет друг
  5. a('Петя'); // Привет Петя
  6.  


можна дать безграничные возможности по приветствию, полностью убрав хардкод и передав на вывод аргумент
PHP:
скопировать код в буфер обмена
  1. function a($msg) {
  2.   echo $msg;
  3. }
  4. a('Привет друг'); // Привет друг
  5. a('Здраствуй друг'); // Здраствуй друг
  6.  


ну и далее мы можем расширять функционал до бесконечности добавляя новые аргументы и прописывая нужную логику для обработки этих аргументов. Например добавляя функционал вывода несколько раз одно и тоже сообщение, передавая второй аргумент, сколько раз нужно повторить
PHP:
скопировать код в буфер обмена
  1. function a($msg, $times = 1) {
  2.   for($i = 0; $i < $times; $i++) {
  3.     echo $msg . PHP_EOL;
  4.   }
  5. }
  6. a('Привет друг'); // Привет друг
  7. a('Здраствуй друг'); // Здраствуй друг
  8.  
  9. a('Привет друг', 2);
  10. // Привет друг
  11. // Привет друг
  12. a('Здраствуй друг', 3);
  13. // Здраствуй друг
  14. // Здраствуй друг
  15. // Здраствуй друг
  16.  

 

Powered by ExBB FM 1.0 RC1