2014-10-03 3 views
6

Я использую композитор в своем последнем проекте и отображение моей функции как этотComposer Автозагрузка нескольких файлов в папке

"require": { 
    ... 
}, 
"require-dev": { 
    ... 
}, 
"autoload": { 
    "psr-4": { 
     ... 
    }, 
    "files": [ 
     "src/function/test-function.php" 
    ] 
} 

Я полагаю, там будет много файлов в папке функции, например: реальная функция -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", 
] 

Есть ли ленивы, как мне ...

+1

Это функция 'autoload'. Он автоматически загрузит «основной файл», который будет включать в себя ряд запросов. [Вот пример] (https://github.com/WhitePayments/white-php/blob/master/White.php) – FloatingRock

ответ

11

Если вы не можете переместить ваши функции (потому что он сломается кучу кода, или потому, что вы не можете использовать PSR -4), и вы не хотите создавать статические классы, которые содержат ваши функции (которые затем могут быть загружены автоматически), вы можете создать свой собственный глобальный файл include, а затем сообщить композитору о его включении.

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); 

Это не является идеальным, так как она будет загружать каждый файл для каждого запроса, независимо от наличия или отсутствия функций в нем привыкают, но он будет работать.

Смежные вопросы