PHP предотвращает создание экземпляров стандартного класса

(это просто теоретический вопрос, и он не предназначен для сервера в качестве хорошего примера)

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

Например, mysqli не должен быть в состоянии быть построенным.

Возможно ли это техническое?

Спасибо

1

Решение

… но ничего из этого не идеально.

Легкий способ

Если вы не хотите, чтобы кто-то был инстанцировать mysql/i, mongodbили лайки, вы можете просто выгрузить расширение. Тогда ваш ORM должен будет использовать другой класс соединения.

Хакерский путь

Там это хорошее расширение называется runkit который содержит все функции, которые вы никогда не должны использовать. Можно удалить методы из классов, чтобы можно было перезаписать конструктор класса, который вы хотите заблокировать. Нужно ли упоминать, что это действительно плохая идея?

Хороший способ

… Есть отзывы кода. Вы можете подумать, что это не мешает кому-то использовать mysqli, но:

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

TL; DR

Правильно просмотрите ваш код. В любом случае, это часть хорошего стиля кодирования, который предотвращает использование плохих решений для навязывания хороших решений и допускает исключения в случае необходимости.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]