Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
25.09.2019, 22:17
|
|||
---|---|---|---|
Подскажите, как делаются фабрики? |
|||
#18+
Есть фабрика с таким кодом: Код: php 1. 2. 3. 4. 5. 6.
В полученном фабрикой классе мне нужно где-то запомнить исходный datasource. Сейчас я его запоминаю через метод _datasource, который сохраняет в private-переменной полученное значение. Но поскольку метод является публичный, его могут вызвать повторно и изменить значение. Можно передавать datasource в конструктор и запоминать его там, но я бы не хотел загромождать его аргументы. Также можно этот метод вообще убрать, а вместо него в магическом методе __set проверять по debug_backtrace откуда его вызывают и разрешать вызывать только из фабрики. Но как-то это переусложнено. Еще видел трюки с Closure::bind, позволяющие внедрить метод внутрь класса, но это тоже как-то сложно, плюс требует версию 5.4+. Может быть есть другой простой способ влезть в private-scope создаваемого класса? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.09.2019, 11:53
|
|||
---|---|---|---|
Подскажите, как делаются фабрики? |
|||
#18+
Сделать метод setDataSource ? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.09.2019, 12:29
|
|||
---|---|---|---|
Подскажите, как делаются фабрики? |
|||
#18+
Э... От того, что я метод _datasource переименую в setDataSource, он станет работать по другому? Если это будет публичный метод, его сможет вызвать любой. Если это будет private/protected, то фабрика не сможет его использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.09.2019, 12:40
|
|||
---|---|---|---|
Подскажите, как делаются фабрики? |
|||
#18+
Сейчас у меня сделано так: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Интересует, можно ли такое поведение получить более прямым способом? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=23&mobile=1&tid=1459857]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 132ms |
0 / 0 |