Function Fundamentals

Loading concept...

🎯 PHP Functions: Your Code’s Little Helpers

Imagine you have a magical toolbox. Each tool does one specific job. A hammer pounds nails. A screwdriver turns screws. You don’t rebuild these tools every time—you just grab them and use them!

Functions in PHP work exactly like that. They’re reusable tools you create once and use many times.


🏗️ Function Declaration: Building Your First Tool

Think of declaring a function like writing a recipe card. You:

  1. Give it a name
  2. List what ingredients it needs (parameters)
  3. Write the steps (code inside)
function sayHello() {
    echo "Hello, World!";
}

// Use it anytime!
sayHello();

The Recipe:

  • function → “I’m making a new tool!”
  • sayHello → The tool’s name
  • () → Where ingredients go (empty for now)
  • {} → The instructions inside

💡 Think of it this way: You wrote the recipe once. Now you can cook that dish whenever you want by just calling its name!


📦 Function Parameters: Passing Ingredients

What if your recipe needs ingredients? That’s what parameters are—placeholders for values you’ll pass in later.

function greet($name) {
    echo "Hello, $name!";
}

greet("Luna");   // Hello, Luna!
greet("Max");    // Hello, Max!

Multiple Parameters? No problem!

function add($a, $b) {
    echo $a + $b;
}

add(3, 5);  // 8
add(10, 20); // 30

🎨 Picture this: $name is like a blank name tag. When someone calls greet("Luna"), we stick “Luna” on that tag!


🎁 Default Parameter Values: Pre-Set Ingredients

What if someone forgets to bring an ingredient? You can provide a backup!

function makeCoffee($type = "regular") {
    echo "Making $type coffee...";
}

makeCoffee();          // Making regular coffee...
makeCoffee("espresso"); // Making espresso coffee...

Mix default and required:

function greetUser($name, $greeting = "Hi") {
    echo "$greeting, $name!";
}

greetUser("Alex");         // Hi, Alex!
greetUser("Alex", "Hello"); // Hello, Alex!

⚠️ Rule: Put defaults at the END. Required first, optional last!


🎁 Return Values: Getting Something Back

Sometimes you don’t just want the tool to DO something—you want it to GIVE you something back.

function add($a, $b) {
    return $a + $b;
}

$result = add(5, 3);
echo $result; // 8

Without return: The function does work but hands you nothing. With return: The function does work AND gives you a gift!

function getGreeting($name) {
    return "Hello, $name!";
}

$message = getGreeting("Sam");
echo $message; // Hello, Sam!

🎯 Key insight: return is like a delivery truck. It carries the result back to whoever called the function!


🏷️ Named Arguments: Labeled Packages

Starting from PHP 8.0, you can name your arguments! It’s like labeling each gift box so order doesn’t matter.

function createUser($name, $age, $city) {
    echo "$name, $age, from $city";
}

// Normal way (order matters!)
createUser("Luna", 25, "Paris");

// Named arguments (order doesn't matter!)
createUser(
    city: "Paris",
    name: "Luna",
    age: 25
);

Why is this awesome?

  • Skip confusion about order
  • Code is self-documenting
  • Combine with defaults easily!
function sendEmail(
    $to,
    $subject,
    $body = "",
    $urgent = false
) {
    // send email logic
}

// Only pass what you need!
sendEmail(
    to: "friend@mail.com",
    subject: "Hi!",
    urgent: true
);

🌊 Variadic Functions: Accept Everything!

What if you don’t know how many ingredients someone will bring? Use the spread operator ... to accept ANY number of arguments!

function addAll(...$numbers) {
    return array_sum($numbers);
}

echo addAll(1, 2);           // 3
echo addAll(1, 2, 3, 4, 5);  // 15
echo addAll(10, 20, 30);     // 60

Mix regular and variadic:

function greetAll($greeting, ...$names) {
    foreach ($names as $name) {
        echo "$greeting, $name! ";
    }
}

greetAll("Hello", "A", "B", "C");
// Hello, A! Hello, B! Hello, C!

🎪 Think of ... as a magic bag that can hold 1 item, 100 items, or even zero items!


📤 Argument Unpacking: Emptying the Bag

The opposite of variadic! You have an array and want to “spread” it as separate arguments.

function introduce($first, $last, $age) {
    echo "$first $last is $age years old";
}

$person = ["Luna", "Star", 25];

// Unpack the array!
introduce(...$person);
// Luna Star is 25 years old

Named unpacking works too:

$data = [
    "first" => "Max",
    "last" => "Power",
    "age" => 30
];

introduce(...$data);
// Max Power is 30 years old

🎁 Visual: Imagine unwrapping a gift box (...) and laying out each item separately!


🗺️ How It All Connects

graph TD A[🏗️ Declare Function] --> B[📦 Add Parameters] B --> C[🎁 Set Defaults] C --> D[🎯 Return Values] D --> E[🏷️ Use Named Args] E --> F[🌊 Accept Many with ...] F --> G[📤 Unpack Arrays with ...]

✨ Quick Summary

Concept What It Does Example
Declaration Creates a new function function hi() {}
Parameters Inputs the function needs function hi($name)
Defaults Backup values if none given $name = "Guest"
Return Sends a result back return $value;
Named Args Label your inputs greet(name: "Jo")
Variadic Accept unlimited inputs ...$items
Unpacking Spread array as args fn(...$arr)

🚀 You Did It!

You now understand PHP functions from the ground up:

  • Declare them like writing recipes
  • Pass ingredients through parameters
  • Set defaults for missing ingredients
  • Return results like delivery trucks
  • Name your arguments for clarity
  • Accept any amount with variadic ...
  • Unpack arrays to spread their contents

Functions are your code’s superpower. Write once, use forever. 💪

Loading story...

No Story Available

This concept doesn't have a story yet.

Story Preview

Story - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

Interactive Preview

Interactive - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Interactive Content

This concept doesn't have interactive content yet.

Cheatsheet Preview

Cheatsheet - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Cheatsheet Available

This concept doesn't have a cheatsheet yet.

Quiz Preview

Quiz - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Quiz Available

This concept doesn't have a quiz yet.