Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (3) [1] 2 3  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Система инициализации компонентов.
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15780
Пользователь №: 6543
На форуме: 8 лет, 3 месяца, 17 дней
Карма: 299

Трезвый :
6 лет, 26 дней


Ну вот, выбрал время продолжить.

Сделал работу с компонентами. Осталось впринципе роутер сделать и можно без оглядки клепать библиотеки. Немного подладил дебаггер, не до конца еще, но вполне наглядно. Там есть демонстрационная страничка.


Ну как, много нарушил канонов? Зеленкой запасся, каску одел. smile.gif


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

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

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Razzwan  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Землянин
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 622
Пользователь №: 40774
На форуме: 2 года, 5 дней
Карма: 10




Николай, непонятно, что именно ты сделал. Ты бы ссылочку прямо на код, да с описаниями. Никто так рыться не будет.


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15780
Пользователь №: 6543
На форуме: 8 лет, 3 месяца, 17 дней
Карма: 299

Трезвый :
6 лет, 26 дней


Там есть ссылка. :) Это как анекдот был про Илью Муромца - посыпь его мелом и дай мою палицу.

Там все полностью нужно смотреть. Сделал все по науке, по всем канонам ООП. Если кого смутит статический класс вместо bootstrap, то это просто оболочка для упрощения синтаксиса. Можно его вообще не юзать, писать на махровом ООП. А так вроде все фантики там есть. И куча паттернов, и все объектами и прочая лабуда.

И вот что интересно. Чем больше я вникаю в ООП, тем больше утверждаюсь в своей правоте. Ничего хорошего в нем нет. Половину времени я тратил на то, чтобы следить, как бы чего не нарушить. А ведь бОльшую часть того, что я там сделал, можно было совершенно безболезненно написать на статике. Не выдумывая, как извернутьбся, дабы это был объект.
А иногда и на процедуре. Допустим запуск трассировки можно было сделать функцией, и тогда можно было бы писать так:
dbg($bar);
А сейчас приходится так:
\Abc\Abc::dbg($bar);

Я уже не говорю о том, сколько шишек прилетело за автолоадер. Но это было уже выше моих сил, делать его классом.

Посмотрим что дальше будет. Пока не впечатлило. Очень скучно живут ООПэшники.


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

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

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15780
Пользователь №: 6543
На форуме: 8 лет, 3 месяца, 17 дней
Карма: 299

Трезвый :
6 лет, 26 дней


Принцип в общих чертах таков.
В ядре находятся скрипты управления библиотеками, ну и роутинг потом будет. Весь основной функционал в самодостаточных компонентах. При запуске формируется контейнер с функциями запуска интерфейсов. Эдакий сервис-локатор. Интерфейсы в либах однотипные, поэтому можно просто добавлять их по мере надобности.

Пока по дефолту собирается все, и по отдельности. Но потом, развивая идею, можно наделать билдеров (или как их назвать пока не знаю), которые будут собирать пачки компонентов, устанавливая их взаимодействие. Допустим тот же AR или миграции должны юзать компонент базы данных. Можно будет запустить эту пачку, а можно пользоваться нативным SQL. Главное оставить право выбора, без особого ущерба для ресурсов.

Сейчас компонент достать очень просто, вот так к примеру:

Abc::createNewApp();
$mysqli = Abc::component('MySQLi');

Или так, если кому претит статический синтаксис
        $abc = new AbcProcessor; 
$mysqli = $abc->getComponent('MySQLi');
Правда для этого нужно композер еще поставить.

Ну и так далее. :)


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

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

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11823
Пользователь №: 23195
На форуме: 6 лет, 5 месяцев, 26 дней
Карма: 429

Трезвый :
7 лет, 4 месяца, 26 дней


почему Abc::createNewApp() @return object хотя ни единого return'а в коде метода нет?
почему такая неразбериха с отступами в коде?
/**
*
@var object
*/

protected static $abc;

а с регистром имен?
namespace ABC;
use \ABC\abc as Abc;
class Abc


не хватает AbC aBc abC и прочих комбинаций


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11823
Пользователь №: 23195
На форуме: 6 лет, 5 месяцев, 26 дней
Карма: 429

Трезвый :
7 лет, 4 месяца, 26 дней


createNewApp переводится как "создать новое приложение"
но если я 2 раза попытаюсь его создать, то получу исключение. Получается семантическая ошибка.
либо крестик сними метод переименуй, либо логику измени

PS. может это все оффтоп, перенеси куда надо, если что


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15780
Пользователь №: 6543
На форуме: 8 лет, 3 месяца, 17 дней
Карма: 299

Трезвый :
6 лет, 26 дней


Угу, исправлю сии недочеты.

Вообще с Abc путаница потому что по задумке папки должны писаться в нижнем регистре, файлы - как классы (по законам PSR), начиная с заглавной. А скрипт запуска подключается простым инклюдом, от того ему привелегия, дабы не путаться в приложении. Но на самом деле не прав я оказался, сам вижу.

насчет отступов не понял... вроде везде 4 пробела. Или ты про аннотации?

Цитата
но если я 2 раза попытаюсь его создать, то получу исключение. Получается семантическая ошибка.
Так то да, но приложение должно быть одно на сайт по определению, и потому об этом красноречиво заявляет ексепшен. Хотя конечно, new можно убрать, хотелось почеркнуть принадлежность к ООП. biggrin.gif


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

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

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11823
Пользователь №: 23195
На форуме: 6 лет, 5 месяцев, 26 дней
Карма: 429

Трезвый :
7 лет, 4 месяца, 26 дней


Цитата (twin @ 20.10.2015 - 03:33)
Или ты про аннотации?

да, уж очень за них глаз цепляется

Цитата (twin @ 20.10.2015 - 03:33)
Так то да, но приложение должно быть одно на сайт по определению, и потому об этом красноречиво заявляет ексепшен.

ну назови его init()

Цитата (twin @ 20.10.2015 - 03:33)
Хотя конечно, new можно убрать, хотелось почеркнуть принадлежность к ООП.

детский сад smile.gif


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15780
Пользователь №: 6543
На форуме: 8 лет, 3 месяца, 17 дней
Карма: 299

Трезвый :
6 лет, 26 дней


Цитата (Invis1ble @ 19.10.2015 - 23:39)
да, уж очень за них глаз цепляется

Вообще на этот счет нет стандартов вроде. У меня логика такая в этом отношении. Код пишется с отступами. Отступы, они как поля в тетрадке, можно использовать для заметок. А комментарии как раз заметки и есть.

UPD Да, посмотрел как у других. Исправлю тоже. smile.gif


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

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

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11823
Пользователь №: 23195
На форуме: 6 лет, 5 месяцев, 26 дней
Карма: 429

Трезвый :
7 лет, 4 месяца, 26 дней


self::$abc = new self;

Позднее статическое связывание? Не, не слышал :)

        if (!empty(self::$abc)) {
throw new \Exception('Only one process');
}

Почему везде бросается \Exception ? Посмотри иерархию исключений в SPL. А еще лучше - создай собственное, подтип из SPL.


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Santehnick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 240
Пользователь №: 26735
На форуме: 5 лет, 10 месяцев, 12 дней
Карма: 15




Попробуй теперь написать юнит-тесты на свой код, можно на этот класс https://github.com/abc-framework/abc-framew...ebugger/Dbg.php

По мне так этот юнит нетестируемый. Даже если написать на него тест, то он получится сложный, с использованием reflection api. Dbg::tracersSelector() вступает во взаимодействие с другими классами и никак этот метод нельзя обложить моками, чтобы протестировать в изоляции. Тест получится интеграционным, вместо юнит.

Я думаю, что если бы сначала писались тесты, затем код, то дизайн был бы написан иначе.

Без нормальных тестов, чем больше будет кода, тем сильнее будет его регрессия. Результат - вечный багфикс.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15780
Пользователь №: 6543
На форуме: 8 лет, 3 месяца, 17 дней
Карма: 299

Трезвый :
6 лет, 26 дней


Цитата (Invis1ble @ 19.10.2015 - 23:39)
детский сад

Именно! smile.gif Это комплимент, я считаю. Для детского сада и пишу.
Цитата (Invis1ble @ 19.10.2015 - 23:54)
Позднее статическое связывание? Не, не слышал smile.gif

Нет, не слышал. Посмотрим, что за зверь.
Цитата (Invis1ble @ 19.10.2015 - 23:54)
Почему везде бросается \Exception ? Посмотри иерархию исключений в SPL. А еще лучше - создай собственное, подтип из SPL.
А зачем? Все равно все ексепшены ловятся дебаггером. Вообще там предпочтительнее trigger_error(), потому что логируются все ошибки, если логер включить. Пока еще не реализовано к сожалению.
Цитата (Santehnick @ 20.10.2015 - 00:05)
Попробуй теперь написать юнит-тесты на свой код, можно на этот класс

В чем сложность, не пойму я. На этот класс даже есть подобие теста. Ну да, ручной, а в чем затык автоматизировать? Может немного посложнее, чем если бы все хреначить как DI, но зато проще дебажить в процессе.

И вообще, класс DBG, это по сути контекст. Входной скрипт. Как и для чего на него юнит-тест писать? На контроллеры тоже нужны юнит-тесты? На них пишутся функциональные тесты. А Dbg, собственно как и AbcProcessor, и есть контроллеры. С чего то должен начинаться процесс. На остальные классы - легко. smile.gif

Цитата (Santehnick @ 20.10.2015 - 00:05)
Я думаю, что если бы сначала писались тесты, затем код, то дизайн был бы написан иначе.

К принципу DDD я пока как то прохладно отношусь, для библиотек он пойдет, но это позже. Для ядра мобильнее тесты позже писать. К тому же нет четкого понимания предметной области, постоянно новые идеи возникают.


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

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

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1847
Пользователь №: 38654
На форуме: 3 года, 17 дней
Карма: 40




Цитата (twin @ 20.10.2015 - 02:43)
Там все полностью нужно смотреть. Сделал все по науке, по всем канонам ООП. Если кого смутит статический класс вместо bootstrap, то это просто оболочка для упрощения синтаксиса. Можно его вообще не юзать, писать на махровом ООП. А так вроде все фантики там есть. И куча паттернов, и все объектами и прочая лабуда.

Ты так пишешь как будто, что-то дельное и сложное написал. У тебя вообще кода там мало, что бы заявлять, что ты сделал все по науке.


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15780
Пользователь №: 6543
На форуме: 8 лет, 3 месяца, 17 дней
Карма: 299

Трезвый :
6 лет, 26 дней


Цитата (chee @ 20.10.2015 - 05:40)
twin, вот это отступы!

https://github.com/abc-framework/abc-framew...gurator.php#L49

Не понял, какие отступы, что не так? Вроде исправил все.
Цитата (chee @ 20.10.2015 - 05:40)
Ты так пишешь как будто, что-то дельное и сложное написал. У тебя вообще кода там мало, что бы заявлять, что ты сделал все по науке
Я про науку о том, что есть. Нигде ничего не нарушил? Просто был огромный соблазн так не усложнять, но пришлось, раз уж взялся за гуж.


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

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

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1847
Пользователь №: 38654
На форуме: 3 года, 17 дней
Карма: 40




Цитата (twin @ 20.10.2015 - 09:48)
Просто был огромный соблазн так не усложнять, но пришлось, раз уж взялся за гуж.

Еще раз повторюсь, у тебя там ничего нет, вплане количество кода и решаемые им задачи не позволяют сделать выводы, что у тебя все по науке.

Давай с примерами поясню.

Где тут твоё "по науке"
Голимая статика, работаешь на уровне глобального доступа, без всяких внедрений зависимостей. Это не по науке.

Про какие контейнеры, ты говоришь, ты даже не тестировал все это
Это вылетит с фатальной ошибкой . Это не по науке.

Ты пишешь по ООП науке, а значит нужно применять механизмы сопутствующие этой технологии, я про эксепшены. А у тебя опять, какие-то тараканы

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

Я больше, чем уверен, что ты скатишься в глобокий говнокод на статике, если захочешь написать на этом фреймворке, ту типовую CMS'ку из соревнования по парадигмам. Ах, прошу прощения, ты вернешся к своему стилю написания программ если будешь реализовывать ту типовую CMS wink.gif


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (3) [1] 2 3  Ответ в темуСоздание новой темыСоздание опроса