Если говорить о классах собственного проекта, то еще куда

не шло. Но если о библиотеках или фреймворке, где мне нужно что-то изменить для себя? Или каждый раз форкать?)

Помню, не единожды был гемор через то, что в библиотеке некоторый код в private-методе, а не в protected

29 ответов

52 просмотра

через композицию

Матвій-Year Автор вопроса
Сергей Предводителев
через композицию

А технически как реализовать?

Ага, вот последний пример: я использовал компонент Process симфонии, всё было хорошо пока не понадобилось вывод одного процесса направить в другой. Через симфони это работает вместо 10 секунд больше часа... А исправить не возможно, нужный метод где можно исправить проблему private... Финиш... Надо либо форк делать, либо другой компонент искать и много чего переписывать...

Матвій-Year Автор вопроса
mj4444
Ага, вот последний пример: я использовал компонент...

Читал где-то рекомендацию использовать private в своих проектах, а в опенсорсных или просто в библиотеках - protected

Как ты относишься к final в коде фреймворка Yii 3?

Матвій-Year Автор вопроса
Nex Otaku
Как ты относишься к final в коде фреймворка Yii 3?

Хз, не смотрел) Будем на практике шатать

Ну вот мне кажется final как раз и нужен в основном фреймворкам и внешним компанентам, дабы оградить компонент от внешнего (глупого) вмешательства. В своём приложении особого смысла его использовать нет. Но опять же не всегда это нужно. Потом PHP это одно, а yii3 это другое. Что хорошие для yii3, не обязательно должно быть хорошо всем остальным. Тут то все началось именно с PHP, а не с yii.

mj4444
Ну вот мне кажется final как раз и нужен в основно...

Убрать final при необходимости просто - убрал и все работает, ничего не сломалось. Поэтому мне нравится принцип "делаем всё финальным по умолчанию, если появятся веские причины его убрать - уберем“.

Да, там сложнее, но тут нужно рассматривать конкретный кейс: - возможно, действительно нужно убрать final и выпустить новую версию - но чаще нужно доработать библиотеку.

Сергей Предводителев
Да, там сложнее, но тут нужно рассматривать конкре...

Библиотеки используются кардинально разными проектами, с разными релизными циклами. И некоторые просто не станут ждать новой версии если их релизный цикл это 5 минут.

Aleksey Apache
Библиотеки используются кардинально разными проект...

Да, это минус. Но, для меня, этот минус перекрывается плюсами.

Сергей Предводителев
через композицию

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

Дмитрий Герасимов
Композиция тоже зачастую не панацея. Есть у меня п...

Nothing is a panacea, it all depends on the case you want to solve, there is never a single solution :)

su root
Nothing is a panacea, it all depends on the case y...

But rewrite all AssetPublisher becouse of $published is private - i think it's bad idea for me )

Дмитрий Герасимов
But rewrite all AssetPublisher becouse of $publish...

Basically the user only sees its advantages, but does not see the maintenance that any package carries.

Дмитрий Герасимов
Композиция тоже зачастую не панацея. Есть у меня п...

Да, серебряной пули нет. Но взвешивая плюсы и минусы подхода "final по умолчанию" для меня вывод однозначен — подход правильный.

Сергей Предводителев
Да, серебряной пули нет. Но взвешивая плюсы и мину...

Ну имхо - часть этих проблем решилась-бы геттерами для приватных свойств, или php 8.1 readonly - о последнем правда пока только мечтать

Дмитрий Герасимов
Ну имхо - часть этих проблем решилась-бы геттерами...

Новые пакеты, скорей всего, будут уже идти с минимальной версией 8.1. И уже зарелизенные скоро подтянутся.

Сергей Предводителев
Новые пакеты, скорей всего, будут уже идти с миним...

Ларавел и симфони повлияли? Когда писал про 8 версию, в никакую не хотели поднимать минимальную версию.

Махмуд
Ларавел и симфони повлияли? Когда писал про 8 вер...

Многие из зарелизенных пакетов уже используются в текущих проектах, которые ещё не переехали на 8.1.

Сергей Предводителев
Многие из зарелизенных пакетов уже используются в ...

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

Ну а что в этом такого? Когда 3 версия начиналась, было последняя версия 7.4. сейчас она не поддерживается и много людей уже переехали на 8 и 8.1. В свою очередь мы тоже обновляем минимальные требования. Через год-второй глядишь и 8.1 не будет поддерживаться и это совершенно нормально.

Дмитрий
Ну а что в этом такого? Когда 3 версия начиналас...

Когда я предлагал поднять требования фреймворка до последней недавно релизнутой 8 php, до релиза самого фреймворка было еще далеко. Релиз фреймворка примерно ожидался к срокам приближения к RC 8.1, поэтому не видел никаких причин писать фреймворк под 7.4. В новых релизах фреймворка тратить время на изменения под новые версии php, которого у core разработчиков и так нет, и плюс оглядываться на приложения, которые уже зависят от фреймворка. Учитывая почти маниакальную зависимость на обратной совместимости у всех фреймворков, из-за которого не могут вносить изменения в свои пакеты ломающие обратную совместимость, когда могли сразу писать под последнюю версию php не имея таких проблем до релизов. Ссылаются на то что мало еще людей используют последнюю версию php, поэтому не видят смысла пока писать под нее. Как приложения должны попробовать новую версию, если фреймворки от которых они зависят не имеют ее поддержки? Сейчас же получается, что приложения и фреймворк пинают мяч друг другу, сначала вы начните использовать последнюю версию, а потом и мы подтянемся. Как по мне фреймворк должен двигать сообщество к развитию и использовать лучшие практики на данный момент в программировании. "Через год-второй глядишь и 8.1 не будет поддерживаться и это совершенно нормально." Зачем быть в роли догоняющих, отставать на 1-2 года, что в it может быть критично, если можно предлагать современные "прогрессивные" решения. А то получается все сидят на старых версиях, еле шевелятся с переходом на новые версии php, из-за чего rfc для изменений самого php с выбросом легаси и других изменений не могут пройти голосование, поэтому программисты уже предпочитают перейти на go или другой язык, пока в php, что-то с места сдвинется.

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта