|
15 / 15 / 1
Регистрация: 19.10.2012
Сообщений: 570
|
|
Классу нужен другой объект: как правильно?25.05.2022, 10:32. Показов 1066. Ответов 7
Метки нет (Все метки)
добрый время сутки)
есть класс парсера. ему для работы нужен объект curl. не знаю как правильно: создавать объект curl при создании класса, где-нибудь в конструкторе, или создавать его отдельно от парсера, и передавать в методы как параметр? спасибо)
0
|
|
| 25.05.2022, 10:32 | |
|
Ответы с готовыми решениями:
7
Не баг ли? Объект видит приватные члены другого объекта этого же класса Свойству класса присвоить объект другого класса Как из одного объекта получить объект другого класса? |
| 25.05.2022, 11:09 | |
|
На мой взгляд не правильно вообще мешать в одну кучу.
У вас две "подзадачи" 1. Получить контент 2. Распарсить контент А если захотите распарсить контент загруженный иным способом? Имхо. Клиентом получаете контент, а в парсер передаете именно контент. (Если, конечно, нет каких то реальный и объективных причин конкретно в вашей ситуации использовать как таковой клиент внутри парсера.
0
|
|
|
15 / 15 / 1
Регистрация: 19.10.2012
Сообщений: 570
|
|
| 25.05.2022, 11:23 [ТС] | |
|
расскажу подробнее про задачу.
есть магазин с товарами. товары выгружаются из 1с, но без описаний. название, цена, артикул. вся остальная информация есть на других сайтах этой же компании. их 2. т.е. делаю механизм, который будет получать информацию из 2х источников. кроме этого - товар находится через поиск. первым запросом я обращаюсь в поиск по сайту, смотрю нашлось ли что-то, потом получаю ссылку, иду по ней, и уже там собираю инфо о товаре. вообще идея сделать такой парсер в стиле ооп пришла после провальной попытки не заморачиваться и сделать его в процедурном стиле. штука в том что на сайтах источников все параметры называются однотипно. у всех товаров цвет, у всех товаров размер, куча типа-общих параметров. я их собрал, разделил по категориям, чтобы на сайте были понятные названия свойств и удобочитаемый умный фильтр. но этот порыв привалил меня необходимостью при парсинге понимать к какой категории относится товар, и к с какими свойствами в нашей бд связывать свойства этого товара. хочу сбежать от макарон - сделать аккуратный объект, которому скармливаешь артикул, он творит магию, и отдает массив свойств. и я думаю куда лучше прилепить этот самый курл
0
|
|
|
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
|
|
| 25.05.2022, 12:20 | |
|
Ну если прям совсем по ООП, то создаете интерфейс и прячете за ним работу с курл. А реализацию этого интерфейса передаете параметром в конструктор. А можно просто Guzzle скачать и не пилить свой велосипед
![]() Создавать объект напрямую точно плохо, как минимум будут сложности с тестированием, а curl это же еще и поход по сети. Единственное, если это разовый парсер, то может оно того и не стоит...
0
|
|
|
15 / 15 / 1
Регистрация: 19.10.2012
Сообщений: 570
|
|
| 25.05.2022, 15:06 [ТС] | |
|
guzzle, судя по тому, что я про него нашел, это тоже самое что и курл, только удобнее. точно так же мне надо сделать его объект и через него получать контент... не понял почему использование guzzle убирает какой-то велосипед. если можно то объясните этот момент.
убрать работу с курл за интерфейс... тут видимо хромает мое понимание как использовать интерфейс на практике. интерфейс это штука с описанием методов, которые класс должен реализовать. в конкретном данном случае - я могу описать все в том классе, в который пытаюсь впихнуть получение данных. не использую итерфейс. с интерфейсом будет более грамотно? или какая то другая фишка? правильно ли я понял общую мысль - не надо пихать в классы этот куло-газл. создавать его, получать текст страницы, и уже текст страницы отдавать методам, которые будут получать нужные куски? и уже эти методы описывать в классе?
0
|
|
|
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
|
||
| 25.05.2022, 15:34 | ||
|
Более того, это не просто интерфейс, а интерфейс по PSR. Многие аналогичные библиотеки реализуют его, что позволяет подменять одну реализацию на другую. Это возможно потому что код зависит от интерфейса, а не от реализации. Пересказывать все принципы можно долго. Лучше почитайте про solid, grasp, паттерны итд, там все разжевано и с примерами.
0
|
||
|
15 / 15 / 1
Регистрация: 19.10.2012
Сообщений: 570
|
|
| 25.05.2022, 16:35 [ТС] | |
|
это про дальнейшую поддержку. вроде понял. на этом этапе интересовало как действовать с таким дополнительным объектом, который нужен для работы. будем пробовать, спасибо
0
|
|
|
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
|
||
| 25.05.2022, 21:05 | ||
|
0
|
||
| 25.05.2022, 21:05 | |
|
Помогаю со студенческими работами здесь
8
Класс не наследует свойство, если там ссылка на другой объект Правильно ли создавать объект задавая имя класса в строковой переменной? Как правильно описать метод внутри другого метода одного и того же класса?
Как передать объект всему классу Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|