设为首页 收藏本站
查看: 539|回复: 0

[经验分享] PHP面向对象之旅:类和对象

[复制链接]

尚未签到

发表于 2017-4-2 14:41:25 | 显示全部楼层 |阅读模式
  从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."<br>"; // 输出对象
  08 echo "他的名字是 ".$p->name; // 输出对象$p的属性 $name;
  09 echo "<br>";
  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 "<br>";
  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
私有属性不能被外部访,这样做的好处后面会介绍到。

参考:http://www.nowamagic.net/librarys/veda/detail/1082

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-359258-1-1.html 上篇帖子: AES 加密 PHP 和 JAVA 互通 下篇帖子: 一个简单的php验证码程序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表