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中与数组相关的函数
Mar 22 PHP
PHP学习之整理字符串
Apr 17 PHP
Trying to clone an uncloneable object of class Imagic的解决方法
Jan 11 PHP
基于PHP输出缓存(output_buffering)的深入理解
Jun 13 PHP
深入PHP购物车模块功能分析(函数讲解,附源码)
Jun 25 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
Jun 19 PHP
PHP中绘制图像的一些函数总结
Nov 19 PHP
php读取mssql的ntext字段返回值为空的解决方法
Dec 30 PHP
nginx+thinkphp下解决不支持pathinfo模式
Jul 01 PHP
php抓取网站图片并保存的实现方法
Oct 29 PHP
Yii2使用$this-&gt;context获取当前的Module、Controller(控制器)、Action等
Mar 29 PHP
php实现和c#一致的DES加密解密实例
Jul 24 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
PHP自动更新新闻DIY
2006/10/09 PHP
php调用mysql存储过程
2007/02/14 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
PHP按符号截取字符串的指定部分的实现方法
2018/09/10 PHP
HTML中不支持静态Expando的元素的问题
2007/03/08 Javascript
javascript的键盘控制事件说明
2008/04/15 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
jQuery拖拽div实现思路
2014/02/19 Javascript
Javascript基础教程之while语句
2015/01/18 Javascript
js实现可兼容IE、FF、Chrome、Opera及Safari的音乐播放器
2015/02/11 Javascript
JavaScript中的cacheStorage使用详解
2015/07/29 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
JS实现简单易用的手机端浮动窗口显示效果
2016/09/07 Javascript
MUI  Scroll插件的使用详解
2017/04/13 Javascript
简单实现js点击展开二级菜单功能
2017/05/16 Javascript
AngularJS中的作用域实例分析
2018/05/16 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
JavaScript ES2019中的8个新特性详解
2019/02/20 Javascript
JS事件循环机制event loop宏任务微任务原理解析
2020/08/04 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
Python3里的super()和__class__使用介绍
2015/04/23 Python
django 数据库连接模块解析及简单长连接改造方法
2019/08/29 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
Lee牛仔裤澳大利亚官网:美国著名牛仔裤品牌
2017/09/02 全球购物
JYSK加拿大:购买家具、床垫、家居装饰等
2020/02/14 全球购物
研究生简历自我评价范文
2014/09/13 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
三方合作意向书范本
2015/05/09 职场文书
2015入党自传书范文
2015/06/26 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python
Python3.10的一些新特性原理分析
2021/09/15 Python
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript