搜索
首页php教程php手册PHP面向对象之旅:类和对象
PHP面向对象之旅:类和对象Jun 13, 2016 am 10:55 AM
.netc++javaoopphp区分对象视角语言面向

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

PHP5中的类和对象

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

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

view sourceprint?

1  

2 class Person  

3 { 

4    

5 } 

6 $p = new Person(); 

7 echo $p; 

8 ?> 

这样,我们就拥有了第一个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-> 符号调用同一对象的属性。

view sourceprint?

01  

02 class Person{ 

03    public $name = "Gonn"; //定义public属性 $name. 

04    public $age = 20; // 定义 public 属性 $age; 

05 } 

06 $p = new Person(); // 创建对象 

07 echo $p."
";    // 输出对象 

08 echo "他的名字是 ".$p->name;     // 输出对象$p的属性 $name; 

09 echo "
"; 

10 echo '他的年龄是 '$p->age; //输出age属性. 

11 ?> 

程序输出结果为:

view sourceprint?

1 他的名字是 Gonn 

2 他的年龄是 24 

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

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

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

view sourceprint?

01  

02 // 1-4.php 

03 class Person{ 

04    public $name = "NoName"; //定义public属性 $name. 

05    public $age = 20; // 定义 public 属性 $age; 

06 } 

07 $p = new Person(); // 创建对象 

08 $p->name = 'Tom'; //变更姓名为 Tom 

09 $p->age = 25 ; // 变更年龄为 25 岁. 

10 echo "他的名字是 ".$p->name;     // 输出对象$p的属性 $name; 

11 echo "
"; 

12 echo '他的年龄是 '.$p->age; //输出age属性. 

13 ?> 

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

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

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

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

view sourceprint?

1  

2 // 1-3.php 

3 class Person{ 

4    private $name = "Gonn"; //定义public属性 $name. 

5    public $age = 20; // 定义 public 属性 $age; 

6 } 

7 $p = new Person(); // 创建对象 

8 echo "他的名字是 ".$p->name;     // 输出对象$p的属性 $name; 

9 ?> 

运行此程序将会输出:

view sourceprint?

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

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

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

php怎么实现几秒后执行一个函数php怎么实现几秒后执行一个函数Apr 24, 2022 pm 01:12 PM

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

php怎么判断有没有小数点php怎么判断有没有小数点Apr 20, 2022 pm 08:12 PM

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php字符串有没有下标php字符串有没有下标Apr 24, 2022 am 11:49 AM

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php怎么设置implode没有分隔符php怎么设置implode没有分隔符Apr 18, 2022 pm 05:39 PM

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境