PHP Вызов функции (она в файле, в этом файле классов нет) с использованием use function и namespace
Как правильно вызвать ret_int9_val() ? Не хочу создавать класс обертку для нее.
Расположение файла ModulTest.php xampp\htdocs\site\tests\ModulTest.php
<?php
use PHPUnit\Framework\TestCase;
use function App\Modul\ret_int9_val as incr;
class ModulTest extends TestCase {
protected function setUp() : void {
}
protected function tearDown() : void {
}
public function testReturnedValue() {
$a = call_user_func('incr');
$this->assertEquals( 9, $a );
}
}
?>
Расположение файла Modul.php xampp\htdocs\site\src\Classes\Modul.php
<?php
namespace App;
function ret_int9_val() {
return 9;
}
?>
Ответы (2 шт):
Как вариант сделать автолоад через компосер, для этого в composer.json в директиве autoload => files добавляем нужные нам файлы
"autoload": {
***
"files": [
"path/to/functions.php",
]
}
Ну или в файле входа в приложение тот же индексный index.php файл сделать подключение файла с функциями
<?php
***
require __DIR__.'/functions.php';
И теперь в нужном месте можно вызывать функции из файла functions.php по примеру
<?php
class ExampleClass
{
public $ret_int9_val;
public function __construct()
{
$this->ret_int9_val = ret_int9_val();
}
}
Снял видео с ответом. Только не уверен, что так делать правильно. Оно то работает, но достаточно ли это элегантно?
(смотрите на двойной скорости 3 мин)