免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2889 | 回复: 0
打印 上一主题 下一主题

PHP面向对象编程(三) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-03 10:29 |只看该作者 |倒序浏览

                                这次我们讨论关于“构造函数”的问题。
上次我们尝试着定义了“属性”并设置了“属性”的值,通过“方法”成功的取出了属性值。但你要知道,在现实中我们通常不这样来做,我们在定义类的时候,通常是有目的性的,大多数类通常都具备一些固定的属性,比如说我们定一个类,名字叫“人类”,人类不管是男人女人非洲亚洲黄色棕色春哥还是曾哥,都只有一个脑袋。。这就表明它具备一个固定属性,如果我们在应用中需要使用这样类似的固定属性,那么我们难道要每使用一次,就要定义一次么?当然不需要,PHP提供了构造函数,来解决这个问题(当然了,所有面向对象编程都有个东西)。
记住,当我们给一个类创建对象的时候,PHP会自动检索是否存在“构造函数”,它每次都这么做。所以如果你有什么需要“初始化”的东西,尽管往构造函数中放吧。
在PHP5中,我们通过 __construct()来表示构造函数。我们继续通过上一次的例子演示构造函数的使用:
?php
class Product
{
// 以下定义的是一个属性
protected $_type;
protected $_title;
// 构造函数
public function __construct($type, $title)
{
$this->_type = $type;
$this->_title = $title;
}
// 以下定义具体的方法
public function getProductType()
   {
     return $this->_type;
   }
public function getTitle()
  
{
   
return $this->_title;
  
}
}
我们打开test.php 文件,修改为如下代码:
               
                ?php
//调用Product类文件
require_once 'Product.php';
//创建产品对象
$product1 = new Product('Book', 'PHP Object-Oriented Solutions');
$product2 = new Product('DVD', 'Atonement');
//显示产品属性
echo '$product1 is a ' . $product1->getProductType();
echo ' called "' . $product1->getTitle() . '"';
echo '$product2 is a ' . $product2->getProductType();
echo ' called "' . $product2->getTitle() . '"';
在类文件中,我们定义了两个属性,$_type,$_title 我们通过构造函数的参数传递来给这两个属性赋值,当然了,在实际环境中,我们不需要这么做,如果你真的有默认值要设定,直接在构造函数中定义好就行了,不需要通过参数传递,这样做只是为了程序演示。
在test.php文件中,我可以看到,在创建产品对象的时候,我们直接通过参数的传递为Product类指定了其默认属性,而不需要在通过其他的方法赋值。然后,我们通过getProductType来显示属性的具体值。
其实以上赋值与取值的过程,我们用数组完全可以实现,但他们彼此的意义却又本质的不同,数组中的数据我们是不可控的,同时也是无法得到保护的,我们通过构造函数来实现这样的操作,就意味着整个数据的传递过程是完全被我们控制的,外界是无法改变它的。
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/13606/showart_2169728.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP