простое объяснение PHP ООП против процедурного? - PullRequest
100 голосов
/ 07 октября 2009

Я хотел бы выучить PHP и получить представление об ООП и процедурном. Я читал некоторые другие блоги и учебные пособия об ООП и процедурном, но я все еще не могу понять подход.

ООП против процедурного

  1. Что я должен выучить?
  2. Какая разница в коде? каковы эффекты?
  3. Как PHP-фреймворк может помочь в подходе ООП? (Я бы хотел выучить CodeIgniter)
  4. Нужна ли процедурная основа?

Я действительно хочу знать разницу между этими двумя кодами, мое понимание ООП состоит в том, что вы создаете класс, к которому можно получить доступ. (Я не знаю, если это правильно).

Спасибо!

Ответы [ 5 ]

267 голосов
/ 07 октября 2009

Справочная информация: Вы попросили "простое объяснение", которое предлагает:

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

Короткий без жаргонного ответа:

  1. Многие вводные объяснения быстро переходят к примерам "ООП реального мира". Они могут запутать больше, чем помочь, поэтому не стесняйтесь пока игнорировать это.
  2. Вы можете думать об исходном коде просто как о «кусках» функциональности, которые просто сохраняются в отдельных файлах.
  3. Существуют разные способы организации этих "кусков"; в зависимости от таких вещей, как условные обозначения языка программирования, опыт работы с разработчиками или просто старые личные предпочтения.
  4. ООП и процедурное программирование - это просто две основные общепризнанные методологии для организации и организации этих «кусочков» кода.

Long No-Jargon Ответ:

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

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

Вот краткий обзор того, что вы узнаете по мере накопления опыта:

  • Вы можете написать исходный код PHP, который выполняет полезных задач
  • Вы можете организовать полезные задачи в «кусках» кода
  • Вы можете думать о «кусочках» кода независимо от отдельных файлов, в которых они сохранены
  • Иногда эти «куски» кода будут вести себя по-разному в зависимости от параметров , которые вы передаете
  • Куски кода, которые принимают параметры, называются «Функции»
  • Функции могут быть «объединены» вместе, и для этого есть разные способы:
    • Например: у вас может быть только один большой PHP-файл со всеми функциями, которые вы когда-либо писали за всю свою жизнь, перечисленными в алфавитном порядке по имени функции
    • Например: у вас может быть несколько файлов PHP с функциями, которые объединяются по темам [например, функции для выполнения основных операций со строками, функции для обработки массивов, функции для ввода / вывода файлов и т. Д. ]
  • ООП - это особый способ объединить функции вместе в «класс»
  • Класс - это просто еще один уровень "разбитого на куски" кода вместе, так что вы можете рассматривать его как единое целое
  • Класс можно рассматривать как «порцию» методов и свойств

    • методы - это просто функции, которые логически связаны друг с другом в некотором значимом смысле. Слова «метод» и «функция» - это два разных термина для одной и той же вещи.
    • свойства - это просто значения данных, которые относятся к классу. Это значения, которые намеренно не изолированы от какой-либо отдельной функции, потому что более одной функций в классе должны иметь доступ к ним.
      • Например, : если в вашем классе есть куча методов для выполнения астрономии, свойства класса могут быть значениями для некоторых известных чисел, о которых должны знать все методы астрономии (например, Pi, скорость света, расстояние между определенными планетами и т. д.).
    • Это , где большинство ООП-объяснений сбивают с толку , потому что они ветвятся в " реальных примерах ", которые могут быстро выйти за рамки . Часто «реальный мир» является эвфемизмом для онтологических перспектив конкретного человека. Это может быть полезным, только если вы уже достаточно хорошо поняли концепцию , чтобы научить ее кому-то еще.
    • Чтобы понять ООП без путаницы, вы можете пока пропустить примеры из "реального мира" и просто сосредоточиться на коде. Класс - это , просто способ хранить функции (известные методы) и свойства (известные данные) как код PHP в одном или нескольких связанных «кусках» , где каждый Отдельный «чанк» имеет дело с определенной темой или частью функциональности. Это все, что вам нужно знать, чтобы начать.
  • Класс полезен, потому что он позволяет организовать ваш код на на очень высоком уровне таким образом, чтобы вам было легко понимать, использовать и поддерживать.

  • Когда кто-то написал много функций, организовал их во множество Классов и заставил их работать вместе каким-то классным способом, они упаковывают все вместе и называют это «Фреймворком» .
  • Фреймворк - это просто следующий наивысший уровень «разбивки на части» (включая стиль кодирования и соглашения), с которым согласны один или несколько человек, потому что им нравится, как организован код, и он подходит их работе. стиль, предпочтения, ценности, планы мирового господства и т. д.

Смотри также

23 голосов
/ 07 октября 2009

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

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

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

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

6 голосов
/ 21 октября 2014

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

Простой ответ: вам нужно знать и понимать php. Вы можете узнать это на php.net. Как только вы поймете это, вы сможете начать систематизировать код по частям.

Процедурный код использует функции, переменные.

Как только вы освоитесь, вы можете начать организовывать функции и переменные в классы. Мы начинаем вызывать функции как методы, а переменные как свойства.

Удачи.

6 голосов
/ 07 октября 2009

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

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

5 голосов
/ 21 октября 2014

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

...