0
0
PhpHow-ToBeginner · 4 min read

How to Use the use Keyword in PHP: Syntax and Examples

In PHP, the use keyword imports namespaces, traits, or variables into closures. It helps organize code by allowing access to external classes, traits, or variables without full qualification.
📐

Syntax

The use keyword has three main uses in PHP:

  • Importing namespaces: use Namespace\ClassName; to access classes without full path.
  • Using traits: use TraitName; inside a class to include reusable code.
  • Importing variables into closures: function() use ($var) { ... } to access external variables inside anonymous functions.
php
<?php
// Importing a namespace
use Some\Library\ClassName;

// Using a trait inside a class
class MyClass {
    use MyTrait;
}

// Importing variables into a closure
$var = 10;
$func = function() use ($var) {
    echo $var;
};
$func();
Output
10
💻

Example

This example shows how to import a namespace, use a trait, and pass a variable into a closure using use.

php
<?php
namespace Tools;

class Helper {
    public static function greet() {
        return "Hello from Helper!";
    }
}

trait Logger {
    public function log($msg) {
        echo "Log: $msg\n";
    }
}

// Import the Helper class from Tools namespace
use Tools\Helper;

class App {
    use Logger;

    public function run() {
        echo Helper::greet() . "\n";

        $message = "Running app";
        $closure = function() use ($message) {
            echo "Closure says: $message\n";
        };
        $closure();

        $this->log("App finished");
    }
}

$app = new App();
$app->run();
Output
Hello from Helper! Closure says: Running app Log: App finished
⚠️

Common Pitfalls

Common mistakes when using use include:

  • Forgetting to import the namespace, causing class not found errors.
  • Using use inside closures without specifying variables, so external variables are inaccessible.
  • Confusing use for traits with use for namespaces—they serve different purposes.
php
<?php
// Wrong: forgetting to import namespace
// $obj = new Tools\Helper(); // works only if fully qualified
$obj = new Helper(); // Error: class Helper not found

// Correct: import namespace
use Tools\Helper;
$obj = new Helper(); // works

// Wrong: closure without use
$message = 'Hi';
$func = function() {
    echo $message; // Error: undefined variable
};
$func();

// Correct: closure with use
$func = function() use ($message) {
    echo $message; // prints 'Hi'
};
$func();
Output
Fatal error: Uncaught Error: Class "Helper" not found Hi
📊

Quick Reference

Summary of use keyword uses in PHP:

Use CasePurposeExample
Namespace ImportAccess classes without full pathuse Vendor\Package\ClassName;
Trait InclusionAdd reusable methods to classesclass MyClass { use MyTrait; }
Closure Variable ImportAccess external variables inside anonymous functionsfunction() use ($var) { ... }

Key Takeaways

The use keyword imports namespaces, traits, or variables into closures in PHP.
Always import namespaces with use to avoid fully qualifying class names.
Use use inside closures to access external variables explicitly.
Traits are included in classes with use to share reusable code.
Avoid forgetting use in closures or namespaces to prevent errors.