Использование klein.php без композитора?
Есть ли пример кода? Вот что я получил:
// index.php
require_once __DIR__ . '/Klein/Klein.php';
$klein = new \Klein\Klein();
$klein->respond(function () {
return 'All the things';
});
В PHP 5.3 это возвращает ошибку (фатальная ошибка: класс 'Klein\ServiceProvider' не найден в).
2 ответа
Хорошо, я собрал немного кода, который, кажется, работает. Не могу сказать, что рекомендую, но он загружает Klein без ошибок, по крайней мере, на данный момент.
<?php
function include_dir($path) {
if(is_dir($path)) {
foreach (glob($path.'*') as $filename) {
if(is_file($filename) && pathinfo($filename, PATHINFO_EXTENSION) == 'php') {
require_once $filename;
} elseif(is_dir($filename)) {
include_dir($filename.'/');
}
}
}
}
require_once __DIR__ . '/Klein/Exceptions/KleinExceptionInterface.php';
require_once __DIR__ . '/Klein/Exceptions/HttpExceptionInterface.php';
include_dir(__DIR__ . '/Klein/');
$klein = new \Klein\Klein();
$klein->respond(function () {
return 'All the things';
});
Я начал с небольшого цикла в исходном каталоге Klein, который я нашел здесь: /questions/28193221/kak-vklyuchit-vse-fajlyi-php-iz-kataloga/28193233#28193233
Тем не менее, код имеет внутренние зависимости, которые ожидают выполнения автозагрузчиком. Эти файлы будут включены в цикл, но не в желаемом порядке. Поэтому я вручную включил два интерфейса исключений выше, перед запуском цикла. Это немного хрупко, потому что разработчик может изменить эти зависимости в любое время, но это работает.
Более правильным ответом будет использование автозагрузчика. Я не уверен, почему вам не нравится автозагрузчик Composer, но он довольно изящен и прост в использовании. Материал автозагрузки кэшируется, поэтому он не влияет на производительность. Вы можете использовать автозагрузчик независимо от менеджера пакетов. Composer не сильно определяет структуру вашего проекта, за исключением размещения каталога composer.json и vendors/ в корне проекта. Между тем, вы можете автоматически устанавливать всевозможные библиотеки PHP с помощью Composer, блокировать версию или получать обновления. Это хороший инструмент. Если у вас есть общий хостинг, вы можете запустить Composer для своего проекта локально, а затем загрузить результаты. Извините, я уверен, что у вас есть свои причины, просто Composer, возможно, самая крутая вещь, которая случается на PHP-земле за многие годы.
Но если вам не нравится Composer или вы не можете использовать его из-за каких-то внешних ограничений, есть другие автозагрузчики PSR-0/PSR-4:
https://gist.github.com/jwage/221634
/questions/45010780/php-samyij-legkij-sovmestimyij-s-psr-0-avtozagruzchik/45010791#45010791
Или вы можете свернуть свой собственный: http://zaemis.blogspot.fr/2012/05/writing-minimal-psr-0-autoloader.html
Похоже, это всего лишь несколько строк кода.
Если это не удастся, то я, возможно, поищу другую библиотеку маршрутизации. Может быть, попробовать GluePHP?
Это один файл с практически нулевыми зависимостями. Вы не получите модную маршрутизацию на основе замыканий в стиле Синатры. Вместо этого вы создаете очень простой класс для каждого маршрута. Не уверен, что это подлежит обсуждению для вас. Но он маленький и самостоятельный.
Slim Framework также может быть вариантом:
Они предлагают Composer и не Composer методы установки. Не-Composer метод использует свой собственный автозагрузчик. Неплохой подход, но я не уверен, что соответствует вашим критериям.
Если вы не хотите загружать с помощью composer, вы можете посмотреть другую библиотеку...
В настоящее время я разрабатываю php роутер, который нацелен на исключительно высокую производительность. и никакой дополнительной зависимости. Возможно, вы захотите взглянуть:
FYI:
Pux в 48,5 раза быстрее, чем маршрутизатор Symfony при статической диспетчеризации маршрутов, и в 31 раз быстрее при диспетчеризации регулярных выражений. (с установленным расширением pux)
Pux старается не тратить время на вычисления для динамического построения всех маршрутов (например, Symfony/Routing). Вместо этого Pux компилирует ваши маршруты в обычный массив PHP для кеширования, скомпилированные маршруты могут быть загружены из кеша очень быстро.
С поддержкой Pux PHP Extension вы можете загружать и отправлять маршруты в 1,5~2 раза быстрее, чем чистый PHP Pux.