PHP 中的类


Posted in PHP onOctober 09, 2006

PHP 中的类 在阐述类的概念之前我们来先说说面向对象编程的概念:面向对象的程序设计(Object-Oriented Programming,简记为OOP)立意于创建软件重用代码,具备更好地模拟现实世界环境的能力,这使它被公认为是自上而下编程的优胜者。它通过给程序中加入扩展语句,把函数“封装”进编程所必需的“对象”中。面向对象的编程语言使得复杂的工作条理清晰、编写容易。说它是一场革命,不是对对象本身而言,而是对它们处理工作的能力而言。对象并不与传统程序设计和编程方法兼容,只是部分面向对象反而会使情形更糟。除非整个开发环境都是面向对象的,否则对象产生的好处还没有带来的麻烦多。有人可能会说PHP不是一个真正的面向对象编程的语言, PHP 是一个混合型 语言,你可以使用面向对象编程,也可以使用传统的过程化编程。然而,对于大型项目的开发,你可能想需要在PHP中使用纯的面向对象编程去声明类,而且在你的项目开发只用对象和类。随着项目越来越大,使用面向对象编程可能会有帮助,面向对象编程代码很容易维护,容易理解和重复使用,这些就是软件工程的基础。在基于Web的项目中应用这些概念就成为将来网站成功的关键。  

对象(Object)是问题域或实现域中某些事物的一个抽象,它反映此事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。 关于对象要从两方面理解:一方面指系统所要处理的现实世界中的对象;另一方面对象是计算机不直接处理的对象,而是处理相应的计算机表示,这种计算机表示也称为对象。简单的来说,一个人就是一个对象,一个尺子也可以说是个对象。当这些对象可以用数据直接表示时,我们就称他为属性,尺子的度量单位可以是厘米,公尺或英尺,这个度量单位就是尺子的属性。  

在PHP里我们可以定义一个类,类(Class)就是指变量与一些使用这些变量的函数的集合。PHP是一种松散类型的语言,所以通过类型重载不起作用,通过参数的个数不同来重载也不起作用。 有时在面向中重载构造函数非常好,这样你可以通过不同的方法创建对象(传递不同数量的参数)。在PHP中就是通过类来实现的。  

在PHP中是通过类来完成信息封装的,在PHP中定义类的语法是:  
class Class_name // 在面向对象编程类中,习惯上类的第一个字符为大写,并且必须符合变量的命名规则。  
{  

//函数与变量的集合  

}  
?>  

在定义类时你可以按自已的喜好的格式进行定义,但最好能保持一种标准,这样开发起来会更有效些。  

数据成员在类中使用"var"声明来定义,在给数据成员赋值之前,它们是没有类型的。一个数据成员可以是一个整数,一个数组,一个相关数组(Associative Array)或者是一个对象。  

下面是一个类定义的实际例子:  
class Student  
{  
var $str_Name; //姓名  
var $str_Sex; //性别  
var $int_Id; //学号  
var $int_English; //英语成绩  
var $int_maths; //数学成绩  
}  
?>  

这是一个很普通定义类的简单例子,用于显示学生的学习成绩,类名为Student,Student类包涵了一个学生的基本属性:姓名、性别、学号、英语成绩和数学成绩。  

function我们称之为在类中被定义的函数,在函数中访问类成员变量时,你应该使用$this->var_name,其中var_name指的是类中被声明的变量,否则对一个函数来说,它只能是局部变量。 我们先定义一个Input()的函数,用来给实例中的对象赋以初值:  
function Input ( $Name, $Sex, $Id, $Englis, $Maths)  
{  
$this->str_Name=$Name;  
$this->str_Sex =$Sex;  
$this->int_Id =$Id;  
$this->int_Englis=$English;  
$this->int_Maths=$Maths;  
}  

现在我们再定义一个叫“ShowInfo()”的函数,用于打印学生的基本情况:  
function ShowInfo() //定义ShowInfo()函数  
{  
echo (“姓名:$this->str_Name  

”);  
echo (“性别:$this->str_Sex  

”);  
echo (“学号:$this->int_Id  

”);  
echo (“英语成绩:$this->int_English  

”);  
echo (“数学成绩:$this->int_Maths  

”);  
}  

而定义好的类则必须使用new关键词来生成对象:  
$A_student=new Student;  
例如我们要为一个名为$Wing的对象创建实例,并进行赋值,可以使用下面的代码:  
$Wing =new Student; //用new关键词来生成对象  
$Wing ->Input (“Wing”,”男”,33,95,87);  
//分别输入Wing的姓名、性别、学号、英语成绩、数学成绩,其中姓名和性别是字符型变量,所以需要用双引号,其它为数值型变量则不需要。  
通过下面这段完整的源代码,我们就可以很清楚的看到类在PHP是怎么被运用的:  

class Student  
{  
var $str_Name;  
var $str_Sex;  
var $int_Id;  
var $int_English;  
var $int_maths;  

function Input ( $Name, $Sex, $Id, $English, $Maths)  
{  
$this->str_Name=$Name;  
$this->str_Sex =$Sex;  
$this->int_Id =$Id;  
$this->int_English=$English;  
$this->int_Maths=$Maths;  
}  
function ShowInfo()  
{  
echo (“姓名:$this->str_Name  

”);  
echo (“性别:$this->str_Sex  

”);  
echo (“学号:$this->int_Id  

”);  
echo (“英语成绩:$this->int_English  

”);  
echo (“数学成绩:$this->int_Maths  

”);  
}  
}  

$Wing = new Student;  
$Wing->Input (“Wing”,”男”,33,95,87);  
$Paladin = new Student;  
$Paladin->Input (“paladin”,”女”,38,58,59.5);  

$Wing->ShowInfo();  
$Paladin->ShowInfo();  

?>  
执行结果应是这样的:  
姓名:Wing  
性别:男  
学号:33  
英语成绩:95  
数学成绩:87  
姓名:Paladin  
性别:女  
学号:38  
英语成绩:58  
数学成绩:59.5  

PHP现有的版本较以前的版本在对面向对象编程的支持方面有了很大的改善,但支持的还不是很完整,不过现阶段PHP对面向对象编程语言提供的支持不但有利于我们设计程序的结构,对于对程序的维护也能提供很大的帮助。

全文出自 : cngnu

PHP 相关文章推荐
PHP 存取 MySQL 数据库的一个例子
Oct 09 PHP
PHP 在线翻译函数代码
May 07 PHP
php 将bmp图片转为jpg等其他任意格式的图片
Jun 21 PHP
php smarty模版引擎中的缓存应用
Dec 02 PHP
php curl常见错误:SSL错误、bool(false)
Dec 28 PHP
WordPress中调试缩略图的相关PHP函数使用解析
Jan 07 PHP
PHP代码维护,重构变困难的4种原因分析
Jan 25 PHP
PHP之将POST数据转化为字符串的实现代码
Nov 03 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
Mar 28 PHP
实例分析PHP中PHPMailer发邮件
Dec 13 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
Apr 02 PHP
PHP连接MySQL数据库操作代码实例解析
Jul 11 PHP
用PHP实现验证码功能
Oct 09 #PHP
汉字转化为拼音(php版)
Oct 09 #PHP
如何限制访问者的ip(PHPBB的代码)
Oct 09 #PHP
substr()函数中文版
Oct 09 #PHP
如何使用PHP中的字符串函数
Oct 09 #PHP
vBulletin Forum 2.3.xx SQL Injection
Oct 09 #PHP
PHP_Flame(Version:Progress)的原代码
Oct 09 #PHP
You might like
php的计数器程序
2006/10/09 PHP
PHP简介
2006/10/09 PHP
PHP 中dirname(_file_)讲解
2007/03/18 PHP
php学习笔记 php中面向对象三大特性之一[封装性]的应用
2011/06/13 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
ThinkPHP权限认证Auth实例详解
2014/07/22 PHP
利用PHP将部分内容用星号替换
2020/04/21 PHP
php中session定期自动清理的方法
2015/11/12 PHP
Yii2实现log输出到file及database的方法
2016/11/12 PHP
php文件上传类的分享
2017/07/06 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
jQuery中$.fn的用法示例介绍
2013/11/05 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
PHP 数组current和next用法分享
2015/03/05 Javascript
js实现模拟计算器退格键删除文字效果的方法
2015/05/07 Javascript
jQuery中判断对象是否存在的方法汇总
2016/02/24 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
Vue+Openlayers自定义轨迹动画
2020/09/24 Javascript
可拖拽组件slider.js使用方法详解
2020/12/04 Javascript
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
python生成随机验证码(中文验证码)示例
2014/04/03 Python
python自然语言编码转换模块codecs介绍
2015/04/08 Python
使用Python的urllib和urllib2模块制作爬虫的实例教程
2016/01/20 Python
TensorFlow实现Logistic回归
2018/09/07 Python
Python3 webservice接口测试代码详解
2020/06/23 Python
Python读取Excel一列并计算所有对象出现次数的方法
2020/09/04 Python
工作会议欢迎词
2014/01/16 职场文书
测试工程师职业规划书
2014/02/06 职场文书
火锅店营销方案
2014/02/26 职场文书
研修心得体会
2014/09/04 职场文书
欠条格式范本
2015/07/03 职场文书
创业计划书之美容店
2019/09/16 职场文书