PHP是面向对象的语言吗?如果没有,那么CakePHP的框架呢?它是PHP的面向对象的MVC实现吗?
此外,使用类完全构建的PHP应用程序是否可以称为面向对象的?
答案 0 :(得分:90)
不,PHP不是完全面向对象的语言。
C ++或Java都不是,因为它们都有原始类型(而且PHP也有大量的函数集合,如str_replace()
和is_*()
,这些都是程序性的在自然界)。我所知道的只有纯面向对象的语言是Ruby和Scala(人们可以说后者更多的是针对函数式编程范式)。
PHP,可以称之为“具有对象能力的语言”。
至于用PHP编写的代码,你必须明白,只是因为你正在使用类,它不会使它成为OOP。特别是如果您的代码主要基于静态类。
所以,如果你问:“CakePHP是OO框架吗?”,答案是 - NO 。对它来说最讨人喜欢的描述是“面向类的编程”。代码库充满了静态方法和变量,其中类更像是命名空间。基本上CakePHP是一个程序代码,包含在语法中,表面上模仿了面向对象的代码。
答案 1 :(得分:39)
是的,最新版本的PHP是面向对象的。也就是说,您可以自己编写类,使用继承,并且在适当的情况下,内置功能也构建在对象中(如MySQL功能)。
然而,仍然存在许多松散的函数,因此对于面向对象的PHP如何存在分歧。我觉得是这样的。是的CakePHP是一个面向对象的框架。
答案 2 :(得分:2)
PHP不是完全面向对象的,但它支持某些功能,如
1)班级
2)对象
3)构造函数和析构函数
4)对象继承
5)范围解析运算符(::)
还有更多。如果你想学习面向对象的php,请参考下面的参考链接
答案 3 :(得分:2)
对于任何被归类为面向对象的语言,它需要遵守OO的至少3个原则:继承,多态和封装。我不知道PHP,我以前从未使用它,但如果它至少符合这3个原则那么它是OO,否则它不是。我的建议是搜索PHP如何支持或不支持每个原则。开发人员倾向于过度依赖他们目前使用的语言,并且经常被误导和偏见。举个例子说这个人说C ++不是一个面向对象的编程而且还得到了许多赞许!这个人离真相还不远,但他的回答对许多人来说似乎是正确的!
所以我做了一些挖掘,似乎PHP5支持这三个原则!
答案 4 :(得分:2)
有趣的问题。但是"不", PHP是面向对象的语言而不是面向对象,是的,但CakePHP是一个面向对象的框架。
答案 5 :(得分:2)
面向对象技术经常被描述 封装,多态和继承的术语。但 这些只是身份。 如果要成功实现面向对象技术 它必须强调对象。
对象 - 包含数据和程序的数据包
方法 - 提供服务
消息 - 请求执行方法
类 - 用于创建对象的模板
实例 - 属于类
的对象封装 - 对象支持的信息隐藏
继承 - 允许重用类规范的机制
类层次结构 - 表示继承关系的树结构
多态 - 隐藏公共接口背后的不同实现
[ Alan Kays ] [4] ["Considered by some to be the father of object-oriented programming"
]定义:
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,C ++和PHP违反了规则1?为什么bcoz int, float etc. (there are a total of eight primitive types).
因此它不能严格意义上的面向对象,但有些人认为它是OOP。
答案 6 :(得分:0)