2013-05-26 4 views
9

Поэтому, прежде чем я всегда использовать процедурный стиль кода PHP, такие как:Допустимо ли использовать сочетание объектно-ориентированного стиля с процедурным стилем в кодировании PHP?

mysqli_connect 

или

mysqli_prepare 

И теперь я случайно начал смешивать все это и я хотел бы сделать что-то вроде:

mysqli_connect(); 

, который является процедурным стилем, а затем следующая команда:

$mysqli->prepare(); 

который объектно ориентированный стиль.

Мой код по-прежнему работает, но если я смотрю на php.net всякий раз, когда он показывает примеры, весь пример либо объектно-ориентированный, либо процедурный. Поэтому я спрашиваю, нормально ли мне использовать объектный и процедурный PHP-код одновременно. Заранее спасибо!

ответ

11

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

технические программы -

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

Доступность: -

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

Дружественные -

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

Обработка данных и скорость -

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

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

Забегая вперед -

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

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

Надеюсь, что это дает некоторые соображения. Благодарю.

1

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

http://www.codingconfessional.com/

или

http://pragprog.com/the-pragmatic-programmer

+0

Я просто хотел убедиться, что это сработает, несмотря ни на что. Если он все равно будет работать, что бы ни случилось, тогда я выбираю второй вариант :). – edwardtyl

+0

В самом основном проекте OOP heavy php всегда есть хотя бы немного процедурного кода (что-то должно создать экземпляр первого объекта и заставить мяч катиться.) – Orangepill

+0

На самом деле вы должны использовать любой стиль кодирования, который наилучшим образом соответствует вашей ментальной модели проблема. – Orangepill

1

Использование и не нарушит ваш код и технически «хорошо», но рассмотреть будущее обслуживание приложения вами или кем-то еще. Гораздо проще читать код, если он согласован и чист, и вы сэкономите много времени позже, выбирая и придерживаясь одного сейчас (предпочтительно ООП).