PHP Zusatz


namespaces

ermöglicht Klassen, Funktionen und Konstanten in einem bestimmten Namensbereich zu organisieren, um Konflikte mit gleichnamigen Elementen aus anderen Namensbereichen (name collision) zu vermeiden

namespace Food;

require 'Apple.php';
require 'Banana.php';

use Apples;
use Bananas;

Apples\eat();
Bananas\eat();
// Apple.php

namespace Apples;

function eat() {
  echo "eat APPLE";
}
// Banana.php

namespace Bananas;

function eat() {
  echo "eat BANANA";
}

Aufbau:

\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>


autoload

spl_autoload_extensions(".php"); // comma-separated list
spl_autoload_register();

Beispiel mit benannter Funktion:

    function my_autoload ($className) {
        include(__DIR__ . "/" . $className . ".class.php");
    }

    spl_autoload_register("my_autoload");

Beispiel mit anonymer Funktion:

spl_autoload_register(function ($class) {
    $directories = [
        __DIR__,
        __DIR__ . DIRECTORY_SEPARATOR . 'app'
    ];

    $class = str_replace('\\', DIRECTORY_SEPARATOR, $class);

    foreach ($directories as $directory) {
        $classPath = $directory . DIRECTORY_SEPARATOR . $class . '.php';

        if (file_exists($classPath)) {
            require_once $classPath;
            return true;
        }
    }

    throw new Exception("Class {$class} not found");
});


packagist

The PHP Package Repository @ packagist.org

Dependency

DEPENDENCY @ xkcd.com


composer

A Dependency Manager for PHP @ getcomposer.org

"autoload": {
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
        "path/to/file.php"
    ]
}