- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте!
Как корректно использовать экземпляр класса MySQLi в других классах? Поиск советует использовать обертку с созданием статического метода. Кто то предлагает решение типа global в конструкторе другого класса. Как быть?
Спасибо!
global $db;
вполне уместно имхо.
Есть еще вариант с использованием полей объекта. Передавайте $db в конструктор, приcваивайте приватному полю значение $db, а потом в классах уже используйте $this->db.
Резюмируя, получается 3 возможных варианта:
Минусы:
1й вариант - нарушает принципы ооп
2й вариант - не очень "смотрится", если в конструктор необходимо передать несколько экземпляров разных классов
3й вариант - не хочется делать "обертку" по причине создания еще одного класса суть которого только передать экземпляр.
Если других вариантов нет, получается наиболее правильный 3й...
Минусы:
1й вариант - нарушает принципы ооп
2й вариант - не очень "смотрится", если в конструктор необходимо передать несколько экземпляров разных классов
3й вариант - не хочется делать "обертку" по причине создания еще одного класса суть которого только передать экземпляр.
Если других вариантов нет, получается наиболее правильный 3й...
Исходите из того, насколько большой проект у вас. Если средний, то смело используйте 3-й вариант. В большинстве фреймворков он тоже применяется.
Если проект большой или нужно работать с несколькими БД, то лучше 2-й вариант (вкупе с 3-м).