[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: abc.php на правах bootstrap
Страницы: 1, 2, 3, 4
Dezigo
    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 должен быть не зависимым.
twin
Цитата (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);
До роутинга мы еще не дошли даже теоретически. smile.gif
Цитата (ZSH @ 7.10.2015 - 18:39)
По мне так дебагеру не место в основном классе фреймворка, отдельную либу или класс написать и подключать когда надо

Так там и нет дебаггера . Название было неудачным. Это селекторы, переключатели. Сами обработчики естественно отдельно будут. Я изменил название. Теперь там не debugg() а debugSelector()

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
twin
Цитата (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()

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
twin
Цитата (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)
Ну и еще много всего странного.
Давайте обсудим. :)
Странно, потому что нестандартно. Может ошибочно, а может наоборот - находка. Как знать... Пока не разберешь по полочкам, не поймешь.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.