Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

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

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

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

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

методы - предоставлять услугу

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

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

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

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

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

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

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

[ Alan Kays] [4] [ "Considered by some to be the father of object-oriented programming"] Defination:

  • EverythingIsAnObject.

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

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

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

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

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, С++ и PHP нарушают правило 1. Почему bcoz int, float etc. (there are a total of eight primitive types)., поэтому он не может быть объектно ориентированным в строгом смысле, но некоторые люди считают его ООП.

Ответ 7

Вы найдете все последние функции OOP в PHP с версии 5. Перед PHP v5 появился PHP v4, который не был полностью Object Oriented.

Также вы найдете много новых и расширенных фреймворков, например:

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

Некоторые заметные точки: -

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

Надеюсь, что это поможет.

Ответ 8

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