Size: a a a

2020 March 17

KN

Kirill Nesmeyanov in PHP
но это известная трабла и не пыховская https://stackoverflow.com/questions/48469534/sdl-window-not-displayed-in-windowed-mode-in-macos
источник

AW

Alex Wells in PHP
Dmitriy Tkachenko
иммутабельный - не меняющийся, как видишь метод не статический и перезаписывает поля объекта, т.е. вызовом функции можно изменить стейт объекта, т.е. он мутабельный
ну да, если ты дурачек и вызываешь unserialize
источник

AW

Alex Wells in PHP
но вообще сама по себе десерализация не делает обьект мутабельным
источник

DT

Dmitriy Tkachenko in PHP
источник
2020 March 18

SM

Sasha Mikhlyaev in PHP
Alex Wells
ну да, если ты дурачек и вызываешь unserialize
так ведь тебе никто не может запретить это сделать. и вызов метода тебе не вернет новый объект, а тихонечко так _мутирует_ имеющийся
и раз уж такая возможность есть - объект мутабельный
источник

AW

Alex Wells in PHP
Sasha Mikhlyaev
так ведь тебе никто не может запретить это сделать. и вызов метода тебе не вернет новый объект, а тихонечко так _мутирует_ имеющийся
и раз уж такая возможность есть - объект мутабельный
ну так ты же не можешь заставить пых юзать новый обьект при десериализации. Он себе тихонечко создал обьект без конструктора, а deserialize считай оверлоалом конструктора.

С таким же успехом можно конструктор вызвать и сказать, что обьект мутабельный.
источник

SM

Sasha Mikhlyaev in PHP
Alex Wells
ну так ты же не можешь заставить пых юзать новый обьект при десериализации. Он себе тихонечко создал обьект без конструктора, а deserialize считай оверлоалом конструктора.

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

а такое вот поведение конструктора - это хоть и правда, но вообще пичаль какая-то на самом деле
источник

AW

Alex Wells in PHP
Sasha Mikhlyaev
это ты сейчас с ретроспективой на языки с реальным оверлоадом рассуждаешь

а такое вот поведение конструктора - это хоть и правда, но вообще пичаль какая-то на самом деле
ну да, это просто неприспособленность пхп к таким вещам)
источник

DM

Dmitry MiksIr in PHP
Alex Wells
но вообще сама по себе десерализация не делает обьект мутабельным
Вот только какая связь между десериализацией объекта и методом "unserialize"
источник

AW

Alex Wells in PHP
Dmitry MiksIr
Вот только какая связь между десериализацией объекта и методом "unserialize"
прямая?
источник

AW

Alex Wells in PHP
это обычный метод Serializable интерфейса
источник

AW

Alex Wells in PHP
который пыхом используется под капотом
источник

DM

Dmitry MiksIr in PHP
Ну и что, что часть интерфейса... методом то остается. Не, понятно что можно $obj->__construct вызвать, но это уже извращением попахивает, и, к слову, тем и хорош именованный конструктор
источник

H ᵘ ʜ ᵘ in PHP
всем привет. пишу либу для хранения файлов, есть 3 класса: Manager, Storage и File.
Manager является, по сути, основным классом, внутри которого реализованы методы store, get, delete. Он же работает с базой.
Storage - класс чисто для работы с файлами и директориями. в нём есть upload, отдающий объект File после загрузки файла. этот метод дёргается из Manager::store перед тем, как записать файл в базу.
File, если по-простому, то модель файла.

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

плюс хочу организовать очистку пустых директорий.
название файла при загрузке генерится из md5+timestamp. после этого из этого имени нарезаются названия подпапок (не помню названия этого способа, но до определённого уровня вложенности с начала названия файла отщипываются куски и с их названиями создаются папки). например, файл b4bfcf6443db07298095fd21bf58479b_1584557369.jpg будет лежать в uploads/b4/bf/. после удаления файла папки b4/bf останутся, а хотелось бы их подчищать, убедившись, что они пустые. есть ли смысл закладывать такой функционал в тот же File::delete()? или лучше вынести это в Storage и там уже сканировать uploads и удалять всё, что пустое?
спасибо
источник

H ᵘ ʜ ᵘ in PHP
если запутанно описал суть, могу на пастбин вылить либу
источник

А

Антон in PHP
H ᵘ ʜ ᵘ
всем привет. пишу либу для хранения файлов, есть 3 класса: Manager, Storage и File.
Manager является, по сути, основным классом, внутри которого реализованы методы store, get, delete. Он же работает с базой.
Storage - класс чисто для работы с файлами и директориями. в нём есть upload, отдающий объект File после загрузки файла. этот метод дёргается из Manager::store перед тем, как записать файл в базу.
File, если по-простому, то модель файла.

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

плюс хочу организовать очистку пустых директорий.
название файла при загрузке генерится из md5+timestamp. после этого из этого имени нарезаются названия подпапок (не помню названия этого способа, но до определённого уровня вложенности с начала названия файла отщипываются куски и с их названиями создаются папки). например, файл b4bfcf6443db07298095fd21bf58479b_1584557369.jpg будет лежать в uploads/b4/bf/. после удаления файла папки b4/bf останутся, а хотелось бы их подчищать, убедившись, что они пустые. есть ли смысл закладывать такой функционал в тот же File::delete()? или лучше вынести это в Storage и там уже сканировать uploads и удалять всё, что пустое?
спасибо
Почему бы league/flysystem не использовать?
источник

H ᵘ ʜ ᵘ in PHP
Антон
Почему бы league/flysystem не использовать?
так захотели выше)
но всё же у меня вопрос больше не по поиску инструмента, а по проектированию
источник

А

Артём in PHP
H ᵘ ʜ ᵘ
так захотели выше)
но всё же у меня вопрос больше не по поиску инструмента, а по проектированию
Т.е. тебе прямо сказали «ничего готового не юзать, плить с нуля»?
источник

А

Артём in PHP
Ответь честно — тестовое задание?
источник

MM

Maksim Masiukevich in PHP
H ᵘ ʜ ᵘ
так захотели выше)
но всё же у меня вопрос больше не по поиску инструмента, а по проектированию
Посмотри как спроектирована либа ;)
источник