Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Герои Войны - микс стратегии и РПГ. Собери лучшую армию и победи всех врагов. В игре 7 различных режимов - как для любителей PvE, так и PvP.

Герои Войны

Стратегии, Мидкорные, Экшены

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Framework

С этим тегом используют

Программирование IT Javascript IT юмор Все
43 поста сначала свежее
21
tproger.official
tproger.official
1 год назад
Типичный программист

Когда смотришь на код веб-разработчика:⁠⁠

Когда смотришь на код веб-разработчика: IT, IT юмор, Программирование, Картинка с текстом, Властелин колец, Веб-разработка, Framework, Javascript
Показать полностью 1
IT IT юмор Программирование Картинка с текстом Властелин колец Веб-разработка Framework Javascript
4
nin.jin
nin.jin
2 года назад
Типичный программист
Серия Разнос от Карловского

Препарируем QUASAR и находим родовые травмы⁠⁠

Богатый набор компонент, но..
- Медленная работа
- Огромный вес
- Слабая кастомизируемость
- Сомнительные практики

[моё] Программирование YouTube Программист Vue Frontend Framework Производительность Видео
1
nin.jin
nin.jin
2 года назад
Типичный программист
Серия Разнос от Карловского

Препарируем $mol и находим родовые травмы⁠⁠

Чёрная магия, заставляющая всех страдать и плакать кровавыми слезами, но:

  • нет хайпа в твиттере!

  • нет секси-лендинга!!

  • нет документации!!!

Показать полностью
[моё] YouTube Программирование Программист Разработка IT IT юмор Frontend Framework Видео
0
4
sinloehal
2 года назад

Помогите вспомнить php framework 2014 или раннего года⁠⁠

Помогите вспомнить php framework 2014 или раннего года. Помню только, что название было японским словом.

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

PHP Framework Поиск Помогите найти Текст
2
45
awfun
2 года назад
Лига программистов

Простыми словами о фреймворках⁠⁠

Всем привет, работаю java разработчиком последние 9 лет, хотел бы пояснить на максимально простом примере зачем нужны фреймворки и в чем их отличие от библиотек.

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

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

Часть кода переезжает в настройки или в иной форме становится декларативной. Приведу пример конфигурации одного из самых популярных java фреймворков Spring. Проект будет загружать из БД список пользователей и отдавать их "как есть" через REST апи:

application.yml - конфигурируем порт для апи и настройку подключения к бд:

server.port: 8080
spring.datasource.url: jdbc:postgresql://localhost:5432/mydb

В формате фреймворка объявляем репозиторий - компонент для получения записей о пользователях из таблицы БД:

interface UserRepository extends CrudRepository<User, Long> {}

В формате фреймворка объявляем эндпоинт - точку для подключения других сервисов к REST апи нашего проекта:

@GetMapping("users")

List<User> getUsers() { return userRepository.findAll(); }

Теперь другие сервисы могут через апи нашего сервиса получить список пользователей из БД:

GET http://localhost:8080/users

С минимальными настройками можно подключить и другие необходимые компоненты - для работы с разными БД, очередями, логгированием, можно настроить транзакции, ретраи, авторизацию и всё остальное.

Если вы только начинаете карьеру в it, есть смысл попробовать воспроизвести пару примеров из интернета по вашему фреймворку, а также пройтись по теоретическим вопросам (вроде "жизненный цикл спринг бинов"), но было бы разумней потратить время на общие алгоритмические и технические темы. Всем удачи!

Показать полностью
[моё] Программирование Разработка IT Framework Текст
6
nin.jin
nin.jin
2 года назад
Типичный программист
Серия Разнос от Карловского

Препарируем Qwik и сравниваем его с $mol⁠⁠

Быстро что-то показывает, но... - Тупит на простых действиях из-за дозагрузки - Полурабочее состояние при нестабильном соединении - Отзывчивость сильно зависит от загруженности сети и сервера - Состояние гонки реакций на действия пользователя - Полностью ломается в оффлайне

[моё] IT Программирование YouTube Frontend Framework Видео
0
Sergeytolkachyov
Sergeytolkachyov
2 года назад

Dependency Injection Containers (DI контейнеры) в Joomla 4⁠⁠

Этот текст - перевод статьи из нового портала документации для разработчиков Joomla, раздел "Основные концепции".

Введение

Joomla 4 внедряет практику контейнеров внедрения зависимостей (DI контейнеры, DIC) в Joomla. Эта статья призвана объяснить, почему мы внедряем их и как их использовать в Joomla.

DI контейнеры уже давно существуют в экосистеме PHP для поддержки целей внедрения зависимостей. Например, Symfony представила эту концепцию в 2009 году.
Есть несколько причин, по которым пришло время внедрить их в Joomla 4:
1. Тестирование — одной из тем Joomla 3 были глючные релизы. Нам нужно иметь возможность тестировать классы и компоненты более простым способом. Внедрение зависимостей позволяет значительно упростить внедрение классов Mock, что, мы надеемся, позволит нам уменьшить количество ошибок.

2. Нужно уменьшить количество магии в Joomla - Joomla имеет большое количество "волшебных" файлов, названия которых нужно угадывать. Это увеличивает количество времени, которое люди, плохо знакомые с Joomla, тратят на изучение соглашений по именованию файлов. Предоставление конкретного класса в расширениях позволяет нам легко тестировать совместимость расширений с другими расширениями (например, категориями и ассоциациями).

Глобальный контейнер
Внедрение глобального контейнера зависимостей очень слабо заменяет класс Factory (ex. JFactory). Однако его не следует путать с прямой заменой. Так, например, в ваших контроллерах в CMS вместо \Joomla\CMS\Factory::getDocument(); стоит использовать $this->app->getDocument();.

Это использует внедренное приложение и поэтому упрощает тестирование.

Ссылки по теме на Хабре:

- Опубликован скорректированный план выпуска релизов Joomla 4 и Joomla 5

- Распространенные ошибки при написании плагинов Joomla 4

Создание объекта в контейнере

Чтобы поместить что-то в глобальном DI-контейнере Joomla проще всего передать анонимную функцию. Пример для логгера ниже:

Dependency Injection Containers (DI контейнеры) в Joomla 4 Разработка, Joomla, Ооп, Di, PHP, Cms, Framework, Web, Web-программирование, Длиннопост

Функция share принимает два обязательных параметра и необязательный третий параметр:

1. $key - имя сервиса (dataStore key) - почти всегда является именем класса, который вы создаете.

2. $value - Анонимная функция принимает единственный параметр — экземпляр контейнера (это позволяет вам получать любые зависимости из контейнера). return — это сервис, который вы хотите поместить в контейнер.

3. $protected - (необязательный параметр) - это булев параметр, определяет, защищена ли служба от перезаписи (т. е. разрешено ли кому-либо еще переопределять ее в контейнере). Как правило, для основных служб Joomla, таких как объекты сессии (Session), это true.


Теперь рассмотрим более сложный пример:

Dependency Injection Containers (DI контейнеры) в Joomla 4 Разработка, Joomla, Ооп, Di, PHP, Cms, Framework, Web, Web-программирование, Длиннопост

Здесь видно, что мы добавили две вещи — начали использовать зависимости (роутер API получает приложение API из контейнера) и мы также создали алиас для ApiRouter (в Joomla 4 существует 5 типов приложений - Application - Site, Administrator, Cli, API и Installation, а также могут быть созданы свои типы - Т.С.). Это означает, что контейнер создает экземпляр ApiRouter тогда, когда распознает использование класса.  Зато в нашем коде для простоты мы сможем запустить следующий вызов, чтобы получить роутер (That means whilst the container recognises that if it needs to build an ApiRouter instance it can do that. But in our code to keep things simple we can also run to retrieve our router).


Factory::getContainer()->get('AmazingApiRouter');


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

ПровайдерыПровайдеры в Joomla — это способ регистрации зависимости в сервис-контейнере. Для этого создайте класс, реализующий Joomla\DI\ServiceProviderInterface.

Это дает вам метод регистрации, который содержит контейнер. Затем вы можете снова использовать метод share, чтобы добавить любое количество объектов в контейнер. Затем вы можете зарегистрировать их в контейнере с помощью \Joomla\DI\Container::registerServiceProvider. Вы можете посмотреть, как мы регистрируем все сервис-провайдеры, здесь, в методе \Joomla\CMS\Factory::createContainer.

Dependency Injection Containers (DI контейнеры) в Joomla 4 Разработка, Joomla, Ооп, Di, PHP, Cms, Framework, Web, Web-программирование, Длиннопост

Контейнер компонентаКаждый компонент также имеет свой собственный контейнер (который находится в разделе администратора (administrator section) Joomla). Однако этот контейнер не подвергается воздействию. Он нужен только для того, чтобы получить системные зависимости и позволить классу представлять ваше расширение. Этот класс является классом Extension и как минимум должен реализовывать интерфейс соответствующего типа расширения. Например, компонент должен реализовать \Joomla\CMS\Extension\ComponentInterface (libraries/src/Extension/ComponentInterface.php). Для получения полной информации о реализации в Вашем расширении мы рекомендуем обратиться к официальной документации Joomla «Разработка компонента MVC для Joomla 4».

Использование контейнера компонента в другом расширении

Вы можете легко получить контейнер другого расширения через объект CMSApplication. Например, Factory::getApplication()->bootComponent('com_content')->getMVCFactory()->createModel('Articles', 'Site');

Получите контейнер com_content, получите MVC Factory и получите ArticlesModel фронтенда Joomla. И это будет работать в любом расширении во фронтенде, бэкэнде или API Joomla (в отличие от старого метода LegacyModel::getInstance()).

ДополнительноВ документации Joomla Framework есть отличный пример того, почему внедрение зависимостей полезно для вашего приложения и как DIC помогает его структурировать. Читать на GitHub.

От переводчикаЗамечания и пожелания по переводу приветствуются.

Показать полностью 3
[моё] Разработка Joomla Ооп Di PHP Cms Framework Web Web-программирование Длиннопост
0
11
MirZz
MirZz
2 года назад

В чем разница между фреймворком и библиотекой?⁠⁠

Вы можете иметь библиотеку, но фреймворк имеет вас

IT IT юмор Framework Библиотека Программирование Текст Вопрос
3
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии