В чём различия аргументов и параметров функции?
Довольно частый вопрос, который задают новички на форумах и тематических сайтах. Параметры и аргументы функции - где и когда уместно применять то или иное понятие. На самом деле здесь всё очень просто. Рассмотрим несколько примеров (на 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 string $name;
private string $email;
// Объявляем функцию и определяем нужные параметры для её выполнения
public function createUser(string $name, string $email): void
{
/**
* Вызываем функцию и передаём туда аргумент,
* который является параметром функции createUser()
*/
$this->setName($name);
$this->setEmail($email);
}
/**
* Параметр $name
* @param string $name
*/
private function setName(string $name): void
{
$this->name = $name;
}
/**
* Параметр $email
* @param string $email
*/
private function setEmail(string $email): void
{
$this->email = $email;
}
/**
* Функция без параметров
* @return string
*/
public function getEmail(): string
{
return $this->email;
}
/**
* Функция без параметров
* @return string
*/
public function getName(): string
{
return $this->name;
}
}
Использование класса:
// Создание объекта
$user = new User();
// Вызывавем функцию с аргументами
$user->createUser('Вася', 'Пупкин');
// Вызов функции без аргументов. Сама функция никаких параметров не требует
$user->getName();
$user->getEmail();
Всё оказалось значительно проще, чем казалось.
Предыдущая запись
Кодировка MySQL. Переход с utf8 на utf8mb4Следующая запись
Подсветка синтаксиса на сайте — Highlight.js