В чём различия аргументов и параметров функции?

    Разное    111

Содержание:

В чём различия аргументов и параметров функции?

Довольно частый вопрос, который задают новички на форумах и тематических сайтах. Параметры и аргументы функции - где и когда уместно применять то или иное понятие. На самом деле здесь всё очень просто. Рассмотрим несколько примеров (на PHP)

.

Параметр функции — это переменная, которая используется в функции при её объявлении (в круглых скобках).

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

// Объявление функции
функция (параметр1, параметр2)
{
 // Выполняемый код  
}
Параметр функции — это переменная в сигнатуре функции. Параметр функции - это локальная переменная функции, которая определяется на этапе объявления функции в круглых скобках. Обратиться к параметрам можно только внутри функции, снаружи они не доступны.
<?php
class User
{
 private $name;
 private $email;

 // Объявление функции и определение её параметров на вход
 public function createUser(string $name, string $email)
 {
  $this->name = $name;
  $this->email = $email;
 }
}

Есть класс User, который содержит метод public function createUser(string $name, string $email), который в свою очередь ожидает на вход параметры: $name и $email.

Аргумент функции — это выражение/значение, которое передается в функцию (метод) при её (его) вызове. Аргумент(ы) указывается в круглых скобках при вызове функции.

// Вызов функции
функция (аргумент1, аргумент2);
Аргумент функции — фактическое значение переменной, которая передается в функцию. Аргументы тоже перечисляются через запятую и их количество должно совпадать с количеством параметров, которые функция ожадает на вход.
$user = new User();
// Вызов функции и передача в неё аргументов
$user->createUser('Вася', 'Пупкин');

Здесь мы создаём экземпляр класса User (объект) и передаём в метод createUser() аргументы: Вася и Пупкин.

После того, как мы передали нужные аргуметны в функцию, они сразу же становятся её параметрами.
<?php

namespace cms\base\Models;

class User
{
 private $name;
 private $email;

 // Объявляем функцию и определяем нужные параметры для её выполнения
 public function createUser(string $name, string $email)
 {
  /**
   * Вызываем функцию и передаём туда аргумент,
   * который является параметром функции createUser()
   */
  $this->setName($name);
  $this->setEmail($email);
 }

 /**
  * @param mixed $name
  * @return User
  * Параметр $name
  */
 private function setName($name)
 {
  $this->name = $name;
  return $this;
 }

 /**
  * @param mixed $email
  * @return User
  * Параметр $email
  */
 private function setEmail($email)
 {
  $this->email = $email;
  return $this;
 }

 /**
  * @return mixed
  * Функция без параметров
  */
 public function getEmail()
 {
  return $this->email;
 }

 /**
  * @return mixed
  * Функция без параметров
  */
 public function getName()
 {
  return $this->name;
 }
}

Использование класса:

// Создание объекта
$user = new User();

// Вызывавем функцию с аргументами
$user->createUser('Вася', 'Пупкин');

// Вызов функции без аргументов. Сама функция никаких параметров не требует
$user->getName();
$user->getEmail();

Всё оказалось значительно проще, чем казалось.

Другие заметки по теме Разное