Uczymy się jak sprawić, aby funkcje również podlegały mechanizmowi autoloadingu, na podstawie przykładu z lekcji poprzednich. Do dzieła.
Zmodyfikujemy sobie naszą klasę App (folder powinniśmy już umieć wydedukować po namespace):
<?php
namespace Framework;
class App
{
private $running = false;
public function run(){
$this->running = true;
echo "App is running";
}
public function isRunning(){
return $this->running;
}
}
Teraz w odpowiednim folderze (wydedukujmy jakim) tworzymy plik Middleware.php:
<?php
namespace App\Config;
use Framework\App;
function registerMiddleware(App $app)
{
if($app->isRunning()){
echo "App already running!";
return;
}
echo "I REGISTER MIDDLEWARE </br>";
}
Teraz musimy ten plik dodać do composer.json:
{
"name": "sites/sometry2",
"type": "project",
"require": {},
"autoload": {
"psr-4": {
"Framework\\": "src/Framework",
"App\\": "src/App"
},
"files": [
"src/App/Config/Middleware.php"
]
}
}
Jeszcze odpowiednia komenda:
composer dump-autoload
Możemy przejść do bootstrap.php i użyć funkcji, importując ją za pomocą use:
<?php
require __DIR__ . "/../../vendor/autoload.php";
use Framework\{App, Arr};
use function App\Config\{registerMiddleware};
$app = new App;
registerMiddleware($app);
$app->run();
Działa jak należy.