PHP面向对象编程详解:类和对象

从OOP的视角看,不应区分语言。无论是C++、无论是Java、无论是.net还有更多面向对象的语言,只要你了解了OO的真谛,便可以跨越语言,让你的思想轻松的跳跃。便没有对于Java、.net、PHP 之间谁强谁弱的争执了。

希望这个介绍PHP5面向对象编程(OOP)的资料能让初学者受益,能让更多的PHPer开始转向OO的编程过程。

相对PHP4,PHP5在面向对象方面改变了很多。我们将只介绍PHP5环境下的面向对象。而我们必须改变自己来跟随PHP5的发展。如果代码结果在你的环境下执行不一致,请确认你的环境为PHP5。

我们假设读者没有任何面向对象的知识,即使你是第一次听说OOP,也可以读懂这文章。但我希望你必须对PHP有一些了解。

在后面我们将使用一些例子,来逐渐分析PHP5的OO基础。

面向对象只解决了两个问题,代码的可扩展性 、代码的可维护性。

不得不说句,php越来越像Java了。

整理参考:http://www.lai18.com/content/425094.html

Everything is Object:万事万物皆对象。

面向对象的编程(OOP)思想力图使对计算机语言中对事物的描述与现实世界中该事物的本来面目尽可能的一致。面向对象语言与我们的生活是想通的,面向对象语言学习起来其实很简单。在应用中更符合我们的生活逻辑。

类(Class)是用来描述一个对象(Object):

类描述了每个对象应包括的数据,类描述了每个对象的行为特征。

Class/Object:类(class)和对象(object)是面向对象方法的核心概念。

类是对一类事物描述,是抽象的、概念上的定义;

对象是实际存在的该类事物的每个个体,因而也称实例(instance)。在计算机中,可以理解为,在内存中创建了实实在在存在的一个内存区域存储着这个对象。

创建对象的过程称为创建对象,也称为实例化。

PHP5中的类和对象

我们先建立一个基础的类。

PHP中使用关键字 class 来定义一个类。类的命名一般使用首字符大写,而后每个单词首字符大写连接的方式方便阅读。

<?
class Person
{
}
$p = new Person();
echo $p;
?>

这样,我们就拥有了第一个PHP类。

我们继续来使用这个类,使用 new 这个关键字创建对象,用echo打印$p

我们定义了一个变量 $p ,使用 new 这个关键字创建了一个Person的对象。

打印变量$p,我们看到输出Object id #1 提示这是一个对象。

$p = new Person();也可以写成 $p = new Person;,但不建议使用后面的这种方式。

PHP5 中的属性

属性:用来描述对象的数据元素称为对象的属性(也称为数据/状态)

在PHP5中,属性指在class 中声明的变量。在声明变量时,必须使用 public private protected 之一进行修饰,定义变量的访问权限。

Public(公开): 可以自由的在类的内部外部读取、修改。

Private(私有): 只能在这个当前类的内部读取、修改。

Protected(受保护):能够在这个类和类的子类中读取和修改。

属性的使用:通过引用变量的 -> 符号调用变量指向对象的属性。

在方法内部通过 $this-> 符号调用同一对象的属性。

<?
class Person{
public $name = "Gonn"; //定义public属性 $name.
public $age = 20; // 定义 public 属性 $age;
}
$p = new Person(); // 创建对象
echo $p."<br>";    // 输出对象
echo "他的名字是 ".$p->name;     // 输出对象$p的属性 $name;
echo "<br>";
echo '他的年龄是 '$p->age; //输出age属性.
?>

程序输出结果为:

他的名字是 Gonn
他的年龄是 24

Person类有两个属性,$name 和 $age , 在实例化后,使用$p->name 和 $p->age 打印出属性的内容。

当然,你可以在属性定义时不设置初始值,那样的话,就打印不出任何结果了。

改变对象的属性,注意 8行和9行代码,还有输出结果的变化。我们看到输出的属性值被改变了。

<?
// 1-4.php
class Person{
public $name = "NoName"; //定义public属性 $name.
public $age = 20; // 定义 public 属性 $age;
}
$p = new Person(); // 创建对象
$p->name = 'Tom'; //变更姓名为 Tom
$p->age = 25 ; // 变更年龄为 25 岁.
echo "他的名字是 ".$p->name;     // 输出对象$p的属性 $name;
echo "<br>";
echo '他的年龄是 '.$p->age; //输出age属性.
?>

创建一个Person的对象,改变这个对象的属性。为它命名,查看它的名字。你就是机器里面这个Person对象的上帝,按照你定义的规则,这个实实在在内存中的Person对象被创建了,而且它有了可以改变的属性。

现在,我们就是计算机世界的上帝,准备好创造世界吧。

Private 修饰的属性,在当前对象以外不能访问。设置私有属性是为了进行数据的隐藏。

隐藏:指对象的一种保护机制,使得它的属性或方法不被外部的程序直接访问。

<?
// 1-3.php
class Person{
private $name = "Gonn"; //定义public属性 $name.
public $age = 20; // 定义 public 属性 $age;
}
$p = new Person(); // 创建对象
echo "他的名字是 ".$p->name;     // 输出对象$p的属性 $name;
?>

运行此程序将会输出:

Fatal error: Cannot access private property Person::$name in E:\PHPProjects\test.php on line 9

私有属性不能被外部访,这样做的好处后面会介绍到。

延伸阅读

此文章所在专题列表如下:

PHP面向对象编程详解:类和对象
PHP面向对象编程详解:类的属性
PHP面向对象编程详解:类的方法
PHP面向对象编程详解:对象的比较
PHP面向对象编程详解:构造函数
PHP面向对象编程详解:类的继承
PHP面向对象编程详解:访问控制
PHP面向对象编程详解:方法覆盖
PHP面向对象编程详解:this关键字
PHP面向对象编程详解:parent::关键字
PHP面向对象编程详解:再谈重载
PHP面向对象编程详解:获取用户数据
PHP面向对象编程详解:用户权限管理类
PHP面向对象编程详解:static变量与方法
PHP面向对象编程详解:单例模式
PHP面向对象编程详解:final类和方法
PHP面向对象编程详解:PHP中的常量
PHP面向对象编程详解:抽象类
PHP面向对象编程详解:抽象方法
PHP面向对象编程详解:抽象类继承抽象类
PHP面向对象编程详解:静态抽象方法
PHP面向对象编程详解:模板模式
PHP面向对象编程详解:接口与抽象方法
PHP面向对象编程详解:接口的实现
PHP面向对象编程详解:接口的继承
PHP面向对象编程详解:类型提示
PHP面向对象编程详解:PHP的多态
PHP面向对象编程详解:instanceof运算符
PHP面向对象编程详解:接口与组合模拟多继承
PHP面向对象编程详解:一个接口实例
PHP面向对象编程详解:简单工厂模式

PHP面向对象编程详解:类和对象相关推荐

  1. Java面向对象编程篇1——类与对象

    Java面向对象编程篇1--类与对象 1.面向过程 1.1.概念 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了 1.2.优缺点 优点:性 ...

  2. 《PHP面向对象编程详解》系列技术文章整理收藏

    <PHP面向对象之旅>系列分享专栏 <PHP面向对象之旅>已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201816 ...

  3. 面向对象编程(详解)

    面向对象编程(OOP) 面向对象对象编程,首先我们一些概念要有了解 对象:一切事物都可以是对象,更准确的说,对象是一个实体,用一组可识别的特征和行为来标识,可以说对象不同的地方就是具有不同的特征与行为 ...

  4. python类和对象介绍_Python开发基础-Day17面向对象编程介绍、类和对象

    面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux ...

  5. 面向对象编程思想 以及类与对象

    一.面向对象编程思想 众所周知,我们常见的编程思想有面向过程和面向对象两种,像我们最基础的c语言,就是一种以过程为中心的编程思想,不关注具体的事件和对象而是针对于解决问题的思路和目标,这种编程思想由于 ...

  6. JavaScript面向对象编程详解

    一.面向对象编程 1.面向过程与面向对象 1)面向过程:专注于如何解决一个问题的过程步骤,编程特点是由一个个函数去实现每一步的过程步骤,没有类和对象的概念. 2)面向对象:专注于由哪一个对象来解决问题 ...

  7. Day31——面向对象编程思想,类与对象

    文章目录 面向对象前夕(人狗大战) 编程思想 对象与类的概念 对象与类的创建 对象的独立数据 面向对象前夕(人狗大战) 步骤一:先创建出一个个人和狗 我们选择用字典的数据类型来创建,因为当我们使用字符 ...

  8. python中的面向对象编程讲解_Python中的面向对象编程详解(上)

    创建类 Python 类使用 class 关键字来创建.简单的类的声明可以是关键字后紧跟类名: 代码如下: class ClassName(bases): 'class documentation s ...

  9. JAVA基础-U7 面向对象编程(基础部分)-类与对象

    类与对象(OOP) 快速入门 类是抽象的,概念的,代表一类事物.即它是数据类型 对象是具体的,实际的,代表一个具体事物.即它是实例 类是对象的模版,对象是类的一个个体,对应一个实例 养猫问题: 张老太 ...

最新文章

  1. git ssh创建分支_Git(2):在gitlab中创建开发用户,以及master分支的安全管理
  2. 阎崇年:《袁崇焕传》自序
  3. 【图解】最流行的7个JavaScript 框架各自的优点
  4. 开发程序实现nginx代理节点状态检查及WEB界面展示
  5. PHP中abstract 和 interface的区别
  6. [设计模式] ------ 抽象工厂模式
  7. 全球首发|阿里云正式推出云数据库Redis6.0版本
  8. [翻译] SoundManager 音频管理器
  9. 流程管理无效的几个判定标准?
  10. 仅需10道题轻松掌握Python字符串方法 | Python技能树征题
  11. 目标跟踪入门篇—相关滤波
  12. XShell安装配置教程
  13. 一键Pad变电脑,安全快速的远控办公这不就来了。
  14. 人脸识别与膜虹识别_虹膜识别技术优势明显 比指纹、人脸识别更可靠
  15. 光圈和快门速度的组合
  16. 交集♂差集♂并集♂和其他集合的内置方法
  17. 世界上十个著名悖论详解
  18. 关闭启动最新Photoshop 2021自动同步预设提示方法(临时)
  19. 【图像去雾】基于matlab颜色衰减先验图像去雾【含Matlab源码 2036期】
  20. ThinkPHP中vendor()方法导入第三方类库的用法!ThinkPHP 3.2 vendor()方法的深入研究!

热门文章

  1. 电脑文件恢复怎么操作?永久删除文件的恢复教程
  2. Promises/A+规范(中文翻译)
  3. JavaWeb新闻发布系统的登录新闻增加
  4. 干货分享!这6个高效率办公软件,总有一个值得你收藏!
  5. 【catkin】——将自己代码打包成catkin包
  6. 基于芯片研发平台构建运维体系
  7. 财务数字化转型如何进行?
  8. php中常用的几种加密方式以及md5加密漏洞以及解决方案
  9. Qt Creator release版本进行调试
  10. Codeforces 1257C Dominated Subarray 题解