PHP是面向对象的吗?
PHP是一种面向对象的语言吗? 如果没有,那么CakePHP的框架呢? 它是PHP的面向对象的MVC实现吗?
另外,完全使用类构build的PHP应用程序可以称为面向对象吗?
是的,最新版本的PHP是面向对象的。 也就是说,您可以自己编写类,使用inheritance,并且在适当的情况下,内置的function也是在对象中构build的(如MySQL特性)。
然而,仍然有很多松散的函数,所以可能会有关于面向对象的PHP如何分歧。 我觉得是这样的。 是的,CakePHP是一个面向对象的框架。
不,PHP不是完全面向对象的语言。
而C ++和Java都不是,因为它们都有原始types (而且PHP也有像str_replace()
这样的函数的巨大集合,并且is_*()
,它们本质上是明显的程序性的)。 我所知道的只有纯粹的面向对象语言是Ruby和Scala(有人可能会认为后者更多是针对函数式编程范式)。
PHP是,可以称之为“对象有用的语言”。
至于用PHP编写的代码,你必须明白,只是因为你正在使用类,它不会使它OOP。 尤其是如果你的代码大部分是基于静态类的。
那么,如果你问:“是CakePHP和OO框架?”,那么答案是 – NO 。 最讨人喜欢的描述是“面向类的编程” 。 代码库中充满了静态方法和variables,类更像一个名字空间。 基本上,CakePHP是一个程序代码,用语法包装,表面上模仿了面向对象的代码。
PHP不是完全面向对象的,但它支持一些特性
1)课
2)对象
3)构造函数和析构函数
4)对象inheritance
5)范围分辨率运算符(::)
还有很多。 如果你想学习面向对象的php,请参考下面的参考链接
对于任何被分类为面向对象的语言,它都需要遵守面向对象的至less3个原则:inheritance,多态和封装。 我不知道PHP,我从来没有使用它,但如果它至less符合这三个原则,那么它是OO,否则它不是。 我的build议是searchPHP支持或不支持每个原则。 开发者往往过分依赖于他们目前使用的语言,往往是错误的和有偏见的。 举个例子,这个人声称C ++不是一个面向对象编程,而是收到许多赞许! 这个人不可能离真相越来越远,但他的答案似乎对许多人来说是正确的!
所以我做了一些挖掘,似乎PHP5支持这3个原则!
有趣的问题。 但是“否”,PHP是一种面向对象的语言而不是面向对象,是的,但CakePHP是一个面向对象的框架。
面向对象技术经常被描述为封装,多态和inheritance 。 但这些只是身份。 如果面向对象技术要成功,就必须强调对象。
对象 – 包含数据和过程的数据包
方法 – 提供服务
消息 – 请求执行一个方法
类 – 创build对象的模板
实例 – 属于一个类的对象
封装 – 由对象支持的信息隐藏
inheritance机制允许重用类规范
类层次结构 – 表示inheritance关系的树结构
多态 – 隐藏通用接口后面的不同实现
[ Alan Kays ] [4] [ "Considered by some to be the father of object-oriented programming"
]定义:
-
EverythingIsAnObject。
-
对象通过发送和接收消息(按照对象)进行通信。
-
对象有自己的内存(就对象而言)。
-
每个对象都是一个类的实例(它必须是一个对象)。
-
该类保存其实例的共享行为(以程序列表中的对象的forms)
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).
所以不能严格意义上的面向对象,有的人把它看作是面向对象。
您将在第5版中findPHP中所有最新的OOP特性。在PHP v5之前,有PHP v4,它不完全是面向对象的。
你也会发现许多新的和高级的框架,如下所示:
- Magento的
- Zend公司
- Kohana的
- 交响乐
- 笨
- 警予
这些框架有一些很好的特性,真正意义上是非常强大的,有些也是程序员友好的。
一些值得注意的地方:
- PHP v5仍然不支持多重inheritance。
- PHP v5仍然支持程序化的编码方式,所以它仍旧向后兼容较旧的网站(这是使用PHP v4程序开发的)。
希望能帮助到你。
PHP是面向对象的。 CakePHP是一个面向对象的MVC框架。 使用类构build的PHP应用程序可以称为面向对象。