public function run($app_config = [], $site_config = [])
{
$abc_config = include_once __DIR__ .'/resourses/config.php';
$this->config = array_merge($abc_config, $app_config, $site_config);
include_once __DIR__ .'/core/AbcAutoloader.php';
}
1. Не делайте include внутри метода, а просто передовайте сам путь. (или сам конфиг)
2. Как у Вас - когда вы запускаете приложение - вы передаёте настройки системы, система загружает autoloader. - Здесь всё месте, а надо - загрузчик отдельно, - конфиг отдельно.
На самом деле я бы вынес в отдельный класс Config, где зарегестрировал бы все три конфига.
И Autoloader должен быть не зависимым.
Цитата (ZSH @ 7.10.2015 - 18:39) |
хм... замудрено как то. не проще просто echo ABC_VERSION ? |
Проще. Тут я каюсь, нарушил
YAGNI, и результат незамедлил сказаться. Действительно принцип работает. Я еще толком ничего не начал, а уже столько пропало времени на обсуждение вообще отсутствующего функционала.
Задумка была сделать по принципу
phpversion, так как я планирую модульную структуру. метод должен был бы возвращать версию не только фреймворка в целом, но и каждого компонента по отдельности.
Цитата (ZSH @ 7.10.2015 - 18:39) |
при инициализации приложения я бы передавал не массивы конфигов а пути к файлам (и именно к инициализации, так приложение должно запускаться уже сконфигурированое), зачем лишние переменные плодить |
А массивы как из этих путей получить без переменных? И сами пути в чем передать? Еще один набор. Получается больше наплодится. Кроме того, по задумке, пользовательские конфиги вовсе не обязатательны. Фреймворк должен запуститься и без них.
Цитата (ZSH @ 7.10.2015 - 18:39) |
И еще бы не плохо при запуске обработать принудительную установку роута, типа : Abc::createNewAbc($app_config, $site_config)->run($path_route); |
До роутинга мы еще не дошли даже теоретически.
Цитата (ZSH @ 7.10.2015 - 18:39) |
По мне так дебагеру не место в основном классе фреймворка, отдельную либу или класс написать и подключать когда надо |
Так там и нет дебаггера . Название было неудачным. Это селекторы, переключатели. Сами обработчики естественно отдельно будут. Я изменил название. Теперь там не debugg() а debugSelector()
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Цитата (Dezigo @ 7.10.2015 - 19:21) |
1. Не делайте include внутри метода, а просто передовайте сам путь. (или сам конфиг) |
Давайте привыкать не писать аксиом. Когда пишут так, создается ощущение, что мной командуют. Не делай так! Не бери эту штуку, плюнь, кака!
Если есть железная уверенность, то нужно писать так:
1. Ни в коем случае не делайте include внутри метода, потому что...
Я вот так и не знаю. Почему так нельзя. И где мне подключить главный конфиг. В пользовательском скрипте чтоли? Не понимаю...
Цитата (Dezigo @ 7.10.2015 - 19:21) |
Как у Вас - когда вы запускаете приложение - вы передаёте настройки системы, система загружает autoloader. - Здесь всё месте, а надо - загрузчик отдельно, - конфиг отдельно. |
Странно. А что я сделал... Передал настройки:
public function run($app_config = [], $site_config = [])
Система загрузила autoloader:
include_once __DIR__ .'/core/AbcAutoloader.php';
Автолоадер нельзя загрузить с помощью автолоадера. :) Всё равно придется стартовый подключать инклюдом. Так почему не здесь, я не понял. Чем это грозит?
Цитата (Dezigo @ 7.10.2015 - 19:21) |
На самом деле я бы вынес в отдельный класс Config, где зарегестрировал бы все три конфига. |
А зачем? Чем это выгодно с практической стороны?
Цитата (Dezigo @ 7.10.2015 - 19:21) |
И Autoloader должен быть не зависимым. |
Он независим по определению. У меня загружается дефолтный. Если пользователю нужен свой, для него придумана spl_autoload_register()
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Цитата (Santehnick @ 7.10.2015 - 20:26) |
Я не понял, зачем в этой хитрой системе 3 конфига. Что вы собрались конфигурировать в директории www, когда там в лучшем случае может быть только css/js/img и index.php, а если мы делаем RESTful то даже и этого не будет, будет только точка входа index.php. |
Ну как минимум там можно отключит ЧПУ. Этого уже достаточно. А дальше видно будет. Чтобы понятнее было, я
вот тут расписывал.
Цитата (Santehnick @ 7.10.2015 - 20:26) |
В abc зачем конфиг, когда это vendor, кто его конфигурировать будет, если это композером затягивается как зависимость? |
Для простоты. Так гораздо проще переопределять настройки. Или нет?
Цитата (Santehnick @ 7.10.2015 - 20:26) |
Эти инклюды внутри фреймворка не нужны. Автолоадер и конфиг приложения должены инклюдиться в index.php. |
На стороне пользователя? У фреймворка задекларирована простота и низкий порог вхождения. А значит фреймворк должен запуститься с минимумом движений.
Цитата (Santehnick @ 7.10.2015 - 20:26) |
Автолоадер писать не нужно, он уже есть в композере. |
А если он мне не подходит? При такой структуре он не подходит точно.
Цитата (Santehnick @ 7.10.2015 - 20:26) |
Конфиг должен передаваться в конструктор при инстанциировании приложения. |
Никому он ничего не должен. :) Как минимум опять спрошу - почему? Обоснуй.
Цитата (Santehnick @ 7.10.2015 - 20:26) |
Нужно создать разные типы экзепшенов. Где-то может нужно будет отлавливать экзепшены только определенного типа, а у вас будет все подряд ловить. |
Никто не мешает ловить свои. Вообще никто. Тут ловятся только те, которые будут выброшены по цепочке
Abc::current()->error('аяяй!');
Как это будет устроено, я
писал тут, уже давал ссылку.
Цитата (Santehnick @ 7.10.2015 - 20:26) |
Если вы кидаете непойманое исключение, то скрипт передает управление в дефолтный или пользовательский обработчик исключений и после этого выполнение скрипта останавливается. Соответственно, зачем здесь else, когда вы из if выходите с непойманым исключением, то нижестоящий код не будет выполнен гарантированно. |
Тут ты немного не разобрался в логике. Этим if задается способ обработки. Куда отправить сообщение об ошибке. Либо выбросить ексепшен, либо передать дальше, селектору обработчиков.
Цитата (Santehnick @ 7.10.2015 - 20:26) |
Ну и еще много всего странного. |
Давайте обсудим. :)
Странно, потому что нестандартно. Может ошибочно, а может наоборот - находка. Как знать... Пока не разберешь по полочкам, не поймешь.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.