Каким должен быть экземпляр класса в php?


В PHP 5.2.x, MySQL 5.x

У меня возникла небольшая проблема с тем, чтобы понять, что должно и не должно быть экземпляром класса в php, потому что они не являются постоянными после отображения страницы.

Допустим, у меня есть список комментариев. Для меня было бы разумно, чтобы каждый комментарий был отдельным объектом, потому что я могу вызывать действия над ними, и они содержат свойства. Если бы я делал это на другом языке (который имеет постоянное состояние и с которым можно взаимодействовать), я бы сделал это так.

Но это кажется расточительным, потому что для этого у меня есть цикл, вызывающий new(), и это, вероятно, означало бы, что мне нужно получить доступ к базе данных для каждого экземпляра (тоже плохо).

Но, может быть, я что-то упускаю.

Php просто кажется другим в том, как я думаю о классе и объектах. Когда что-то должно быть экземпляром класса, а когда нет?

Author: Adam Meyer, 2012-01-29

1 answers

Это субъективный вопрос, поэтому я постараюсь собраться с мыслями связно:

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

Объектно-ориентированное программирование обеспечивает (помимо прочего) организацию кода и повторное использование кода. Даже если объект действительно используется только один раз во время выполнения сценария, если определение его класса помогает в организации программы, вы правы, делая это.

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

Добавление:

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

 3
Author: Michael Berkowski, 2012-01-28 22:20:57