PHP中的类-什么叫类


Posted in PHP onNovember 20, 2006

在阐述类的概念之前我们来先说说面向对象编程的概念:面向对象的程序设计(Object-Oriented Programming,简记为OOP)立意于创建软件重用代码,具备更好地模拟现实世界环境的能力,这使它被公认为是自上而下编程的优胜者。它通过给程序中加入扩展语句,把函数“封装”进编程所必需的“对象”中。面向对象的编程语言使得复杂的工作条理清晰、编写容易。说它是一场革命,不是对对象本身而言,而是对它们处理工作的能力而言。对象并不与传统程序设计和编程方法兼容,只是部分面向对象反而会使情形更糟。除非整个开发环境都是面向对象的,否则对象产生的好处还没有带来的麻烦多。有人可能会说PHP不是一个真正的面向对象编程的语言, PHP 是一个混合型 语言,你可以使用面向对象编程,也可以使用传统的过程化编程。然而,对于大型项目的开发,你可能想需要在PHP中使用纯的面向对象编程去声明类,而且在你的项目开发只用对象和类。随着项目越来越大,使用面向对象编程可能会有帮助,面向对象编程代码很容易维护,容易理解和重复使用,这些就是软件工程的基础。在基于Web的项目中应用这些概念就成为将来网站成功的关键。
  对象(Object)是问题域或实现域中某些事物的一个抽象,它反映此事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。 关于对象要从两方面理解:一方面指系统所要处理的现实世界中的对象;另一方面对象是计算机不直接处理的对象,而是处理相应的计算机表示,这种计算机表示也称为对象。简单的来说,一个人就是一个对象,一个尺子也可以说是个对象。当这些对象可以用数据直接表示时,我们就称他为属性,尺子的度量单位可以是厘米,公尺或英尺,这个度量单位就是尺子的属性。
  在PHP里我们可以定义一个类,类(Class)就是指变量与一些使用这些变量的函数的集合。PHP是一种松散类型的语言,所以通过类型重载不起作用,通过参数的个数不同来重载也不起作用。 有时在面向中重载构造函数非常好,这样你可以通过不同的方法创建对象(传递不同数量的参数)。在PHP中就是通过类来实现的。
  在PHP中是通过类来完成信息封装的,在PHP中定义类的语法是: 

<?php  
class Class_name       // 在面向对象编程类中,习惯上类的第一个字符为大写,并且必须符合变量的命名规则。  
{  //函数与变量的集合  
}  
?>

在定义类时你可以按自已的喜好的格式进行定义,但最好能保持一种标准,这样开发起来会更有效些。
数据成员在类中使用"var"声明来定义,在给数据成员赋值之前,它们是没有类型的。一个数据成员可以是一个整数,一个数组,一个相关数组(Associative Array)或者是一个对象。 
下面是一个类定义的实际例子:
<?php   
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<br>   
”);  
echo (“性别:$this->str_Sex <br>   
”);  
echo (“学号:$this->int_Id <br>   
”);  
echo (“英语成绩:$this->int_English <br>   
”);  
echo (“数学成绩:$this->int_Maths <br>   
”);  
    } 

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

  $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对面向对象编程语言提供的支持不但有利于我们设计程序的结构,对于对程序的维护也能提供很大的帮助。

PHP 相关文章推荐
php chr() ord()中文截取乱码问题解决方法
Sep 08 PHP
php date()日期时间函数详解
May 16 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
Dec 10 PHP
微信营销平台系统?刮刮乐的开发
Jun 10 PHP
PHP多个文件上传到服务器实例
Oct 29 PHP
PHP解析RSS的方法
Mar 05 PHP
Codeigniter校验ip地址的方法
Mar 21 PHP
php去除二维数组的重复项方法
Nov 03 PHP
Yii2框架制作RESTful风格的API快速入门教程
Nov 08 PHP
Linux平台PHP5.4设置FPM线程数量的方法
Nov 09 PHP
php判断是否为ajax请求的方法
Nov 29 PHP
PHP count_chars()函数讲解
Feb 14 PHP
解决phpmyadmin 乱码,支持gb2312和utf-8
Nov 20 #PHP
PHP配置心得包含MYSQL5乱码解决
Nov 20 #PHP
PHP+MySQL5.0中文乱码解决方法
Nov 20 #PHP
PHP的面试题集,附我的答案和分析(一)
Nov 19 #PHP
echo(),print(),print_r()之间的区别?
Nov 19 #PHP
PHP的面试题集
Nov 19 #PHP
php+mysql实现无限级分类 | 树型显示分类关系
Nov 19 #PHP
You might like
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
2012/10/24 PHP
探讨:如何使用PhpDocumentor生成文档
2013/06/25 PHP
php使浏览器直接下载pdf文件的方法
2013/11/15 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
php编程实现简单的网页版计算器功能示例
2017/04/26 PHP
php批量修改表结构实例
2017/05/24 PHP
jQuery对表单的操作代码集合
2011/04/06 Javascript
JQuery1.6 使用方法三
2011/11/23 Javascript
JS的replace方法详细介绍
2012/11/09 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
Google (Local) Search API的简单使用介绍
2013/11/28 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
2014/03/25 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
10个很棒的jQuery代码片段
2015/09/24 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
Bootstrap基本组件学习笔记之导航(10)
2016/12/07 Javascript
jQuery判断邮箱格式对错实例代码讲解
2017/04/12 jQuery
微信小程序实现团购或秒杀批量倒计时
2020/11/01 Javascript
解决layer.open后laydate失效的问题
2019/09/06 Javascript
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
python通过colorama模块在控制台输出彩色文字的方法
2015/03/19 Python
python学习教程之使用py2exe打包
2017/09/24 Python
利用Python模拟登录pastebin.com的实现方法
2019/07/12 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
几款好用的python工具库(小结)
2020/10/20 Python
利用CSS3实现炫酷的飞机起飞动画
2016/09/17 HTML / CSS
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
美国老牌主机服务商:iPage
2016/07/22 全球购物
建筑工程技术应届生自荐信
2013/09/27 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
先进班组材料范文
2014/12/25 职场文书
简单的辞职信怎么写
2015/02/28 职场文书