Является ли PHP объектно-ориентированным?

является ли PHP объектно-ориентированным языком? Если нет, то как насчет фреймворка CakePHP? Является ли это объектно-ориентированной реализацией MVC PHP?

кроме того, может ли приложение PHP полностью построено с помощью классы можно назвать объектно-ориентированное?

8 ответов


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

тем не менее, есть еще много свободных функций, поэтому могут возникнуть разногласия о том, как объектно-ориентированный PHP. Думаю, да. И да CakePHP-это ориентированный рамках объекта.


нет, PHP не является полностью объектно-ориентированным языком.

и ни C++ , ни Java, потому что все они имеют примитивные типы (и PHP также имеет огромную коллекцию функций, таких как str_replace() и is_*(), которые имеют явно процедурный характер). Только чистый объектно-ориентированный язык, о котором я знаю, - это Ruby и Scala (и можно утверждать, что последний больше нацелен на парадигму функционального программирования).

PHP-это то, что можно назвать, "объектно-способный язык".

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

Итак, если вы спросите: "является ли CakePHP рамкой OO?- тогда ответ таков:нет. Самое лестное описание для него было бы "ориентированного программирования класса". Код-база заполняется статическими методами и переменными, где class действует больше как пространство имен. В основном CakePHP-это процедурный код, обернутый синтаксисом, который на поверхности имитирует объектно-ориентированный код.


PHP не полностью объектно-ориентирован, но поддерживает некоторые функции, такие как

1) класс
2) Объект
3) конструкторы и деструкторы
4) Объект Наследования
5) Оператор Разрешения Области (::)

и многое другое. Если вы хотите узнать объектно-ориентированный php, обратитесь к ссылке ниже

1) http://php.net/manual/en/language.oop5.php


для того, чтобы любой язык был классифицирован как объектно-ориентированный, он должен придерживаться по крайней мере 3 принципов ОО: наследование, полиморфизм и инкапсуляция. Я не знаю PHP, и я никогда не использовал его раньше, но если он хотя бы соответствует этим 3 принципам, то это OO, иначе это не так. Мое предложение заключается в поиске того, как PHP поддерживает или нет каждый принцип. Разработчики, как правило, чрезмерно привязаны к языку, который они используют в настоящее время, и часто ошибаются и предвзяты. Возьмем, к примеру, человека заявляя, что C++ не является объектно-ориентированным программированием и все же получает много больших пальцев вверх! Этот человек не может быть дальше от истины, но его ответ кажется правильным для многих!

поэтому я немного покопался, и кажется, что PHP5 поддерживает эти 3 принципа!


Интересный Вопрос. Но " Нет", PHP-это объектно-ориентированный язык, не объектно-ориентированный, да, но CakePHP-объектно-ориентированная структура.


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

объекты -- пакет, содержащий данные и процедуры

методы -- deliver service

-- запрос на выполнение метода

класс -- шаблон для создания объектов

экземпляр -- объект, который принадлежит классу

инкапсуляция -- скрытие информации поддерживается объектами

наследование -- механизм, позволяющий повторно использовать спецификации класса

иерархия классов -- древовидная структура, представляющая отношения наследования

полиморфизм -- чтобы скрыть различные реализации за общий интерфейс

[Алан Кайс][4]["Considered by some to be the father of object-oriented programming"] конфигурируемой:

  1. EverythingIsAnObject.

  2. объекты взаимодействуют путем отправки и получения сообщений (в терминах объектов).

  3. объекты имеют свою собственную память (в терминах объектов).

  4. каждый объект является экземпляром класса (который должен быть объектом).

  5. класс содержит общее поведение для его экземпляров (в виде объектов в списке программ)

An object is defined by a triple (OID, type constructor, state) where OID is the unique object identifier, type constructor is its type (such as atom, tuple, set, list, array, bag, etc.) and state is its actual value.

Теперь ясно видно, что Java, C++ и PHP нарушает правило 1?Почему класс int, float etc. (there are a total of eight primitive types). поэтому он не может быть объектно-ориентированным в строгом смысле, но некоторые люди считают его ООП.


вы найдете все последние функции ООП в PHP с версии 5. До PHP v5 был PHP v4, который не был полностью объектно-ориентированным.

также вы найдете много новых и продвинутых платформ, таких как следующий: -

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

некоторые примечательные моменты:-

  • PHP v5 по-прежнему не поддержка множественного наследования.
  • PHP v5 по-прежнему поддерживает процедурный способ кодирования, поэтому он по-прежнему обратно совместим для старых веб-сайтов (которые были разработаны процедурным способом с использованием PHP v4).

надеюсь, что это помогает.


PHP является объектно-ориентированным. CakePHP-это объектно-ориентированная структура MVC. PHP-приложение, построенное с использованием классов, можно назвать объектно-ориентированным.