Я использую композитор в своем последнем проекте и отображаю свою функцию следующим образом
"require": {
...
},
"require-dev": {
...
},
"autoload": {
"psr-4": {
...
},
"files": [
"src/function/test-function.php"]
}
Я предполагаю, что в функции папки будет много файлов, например: real-function-1.php, real-function-2.php и т. Д. Итак, может ли композитор вызывать все файлы в функции папки? мне лень пользоваться
"files": [
"src/function/real-function-1.php",
"src/function/real-function-2.php",
..,
"src/function/real-function-100.php",
]
Есть ли ленивый, как я …
Если вы не можете использовать пространство имен для своих функций (потому что это нарушит кучу кода или потому что вы не можете использовать PSR-4), и вы не хотите создавать статические классы, содержащие ваши функции (которые затем могут быть автоматически загружены) ), вы можете создать собственный глобальный включаемый файл, а затем указать композитору включить его.
composer.json
{
"autoload": {
"files": [
"src/function/include.php"]
}
}
include.php
$files = glob(__DIR__ . '/real-function-*.php');
if ($files === false) {
throw new RuntimeException("Failed to glob for function files");
}
foreach ($files as $file) {
require_once $file;
}
unset($file);
unset($files);
Это неидеально, поскольку он будет загружать каждый файл для каждого запроса, независимо от того, используются ли используемые в нем функции, но он будет работать.
На самом деле есть лучший способ сделать это сейчас без какого-либо специального кода. Ты можешь использовать Компонент Commap для классов если вы работаете с классами. Если вы работаете с отдельными файлами, которые содержат функции, вам придется использовать files[]
массив.
{
"autoload": {
"classmap": ["src/", "lib/", "Something.php"]
}
}