<?php
class Controller {
protected $wrapped = [];
public function abc($request) {
// did we wrap this yet?
if (! isset($this->wrapped['abc'])) {
// if not, do it now. this will only happen once (unless you clear it out).
$this->wrapped['abc'] = $this->wrap(
function ($request) {
return "abc\n";
}
);
}
// invoke and return.
return $this->wrapped['abc']($request);
}
protected function wrap(callable $inner_controller) {
return function($request) use ($inner_controller) {
// stuff
$response = $inner_controller($request);
// stuff
return $response;
};
}
}
$ctrl = new Controller();
echo $ctrl->abc('the request');
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
abc