I know you can use Composer's files
scheme to include functions or definitions automatically in every file.
I'd like to take this one step further and never have to manually write a use classname as
statement again in individual files. This is my ideal set up:
/composer.json
:
{
"require": {
"slim/slim": "2.*"
}
"autoload": {
"files": ["init.php"]
}
}
/init.php
:
use Slim\Slim as Slim;
use Slim\Route as Route;
define("RYAN","BRODIE");
/example.php
:
require '/vendor/autoload.php';
echo RYAN; // ✔ outputs "BRODIE"
new Slim(); // × Fatal error: Class 'Slim' not found
This way whenever I add a new namespace or class to an existing namespace, I can add it to init.php
and then use it as I so wish across all of the repository.
Unless you modify the PHP runtime, this is not possible. namespace
and use
declarations are only valid in the physical file they appear in. These declarations do not span across include
s. If they did you'd have a real nightmare managing namespaces and aliases.
Declaring these at the top of each file is simply something you'll have to live with. Most languages that have features similar to PHP's namespaces do the same.