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
useinside closures without specifying variables, so external variables are inaccessible. - Confusing
usefor traits withusefor 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 Case | Purpose | Example |
|---|---|---|
| Namespace Import | Access classes without full path | use Vendor\Package\ClassName; |
| Trait Inclusion | Add reusable methods to classes | class MyClass { use MyTrait; } |
| Closure Variable Import | Access external variables inside anonymous functions | function() 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.