# PHP Magic Constants

PHP provides a large number of predefined constants to any script which it runs. There are nine magical constants that change depending on where they are used.

---

## 1. File and Directory
*   `__FILE__`: The full path and filename of the file. If used inside an include, the name of the included file is returned.
*   `__DIR__`: The directory of the file. If used inside an include, the directory of the included file is returned. This is equivalent to `dirname(__FILE__)`.

```php
echo "File: " . __FILE__;
echo "Directory: " . __DIR__;
```

## 2. Code Structure
*   `__LINE__`: The current line number of the file.
*   `__FUNCTION__`: The function name.
*   `__CLASS__`: The class name. The class name includes the namespace it was declared in (e.g. `Foo\Bar`).
*   `__METHOD__`: The class method name.
*   `__NAMESPACE__`: The name of the current namespace.
*   `__TRAIT__`: The trait name. The trait name includes the namespace it was declared in.

```php
namespace MyProject;

class MyClass {
    public function myMethod() {
        echo __METHOD__; // Outputs: MyProject\MyClass::myMethod
    }
}
```

## 3. ClassName::class
Although not strictly a magic constant starting with `__`, the `::class` keyword is a special constant that returns the fully qualified name of a class.

```php
namespace MyProject;

class User {}

echo User::class; // Outputs: MyProject\User
```

[[programming/php/php]] [[programming/php/php-constants]]