第三节--定义一个类


Posted in PHP onNovember 16, 2006

+-------------------------------------------------------------------------------+
| = 本文为Haohappy读<<Core PHP Programming>> 
| = 中Classes and Objects一章的笔记 
| = 翻译为主+个人心得 
| = 为避免可能发生的不必要的麻烦请勿转载,谢谢 
| = 欢迎批评指正,希望和所有PHP爱好者共同进步! 
| = PHP5研究中心: http://blog.csdn.net/haohappy2004
+-------------------------------------------------------------------------------+
*/

第三节--定义一个类

当你声明一个类,你需要列出对象应有的所有变量和所有函数—被称为属性和方法. 3.1.1中显示了一个类的构成. 注意在大括号({})内你只能声明变量或者函数. 3.1.2中显示了如何在一个类中定义三个属性和两个方法.

3.1.1 

class Name extends Another Class   
{   
   Access Variable Declaration   
   Access Function Declaration   
} 

3.1.2

<?php   
   //定义一个跟踪用户的类   
   class User   
   {   
       //属性   
       public $name;   
       private $password, $lastLogin;          //方法   
       public function __construct($name, $password)   
       {   
           $this->name = $name;   
           $this->password = $password;   
           $this->lastLogin = time();   
           $this->accesses++;   
       }   
       // 获取最后访问的时间   
       function getLastLogin()   
       {   
           return(date("M d Y", $this->lastLogin));   
       }   
   }   
   //创建一个对象的实例   
   $user = new User("Leon", "sdf123");   
   //获取最后访问的时间   
   print($user->getLastLogin() ."<br>\n");   
   //打印用户名   
   print("$user->name<br>\n");   
?>  

当你声明属性,你不需要指明数据类型. 变量可能是整型,字符串或者是另一个对象,这取决于实际情况.在声明属性时增加注释是一个好主意,标记上属性的含义和数据类型.

当你声明一个方法,你所做的和在类外部定义一个函数是一样的. 方法和属性都有各自的命名空间. 这意味着你可以安全地建立一个与类外部函数同名的方法,两者不会冲突. 例如,一个类中可以定义一个名为date()的方法. 但是你不能将一个方法命名为PHP的关键字,如for或者while.

类方法可能包含PHP中所谓的type hint. Type hint 是另一个传递参数给方法的类的名字. 如果你的脚本调用方法并传递一个不是类的实例的变量,PHP将产生一个”致命(fatal)错误” . 你可能没有给其它类型给出type hint,就像整型,字符串,或者布尔值. 在书写的时候, type hint是否应当包含数组类型仍存在争议.

Type hint是测试函数参数或者运算符的实例的数据类型的捷径. 你可能总是返回这个方法. 确认你强制让一个参数必须是哪种数据类型,如整型. 3.2.1 确保编译类只产生Widget的实例.

3.2.1

<?php   
   //组件   
   class Widget   
   {   
       public $name='none';   
       public $created=FALSE;   
   }      //装配器   
   class Assembler   
   {   
       public function make(Widget $w)   
       {   
           print("Making $w->name<br>\n");   
           $w->created=TRUE;   
       }   
   }   
   //建立一个组件对象   
   $thing = new Widget;   
   $thing->name = 'Gadget';   
   //装配组件   
   Assembler::make($thing);   
?> 

除了传递参数的变量外,方法含有一个特殊的变量. 它代表类的个别实例. 你应当用这个来指向对象的属性和其它方法.一些面向对象的语言假设一个不合格的变量提交给本地属性,但在PHP中方法的任何变量只是在方法的一定范围内. 注意在User类的构造函数中这个变量的使用(3.1.2).

PHP在属性和方法声明前定义一个访问限定语,如public,private和protected. 另外,你可以用”static”来标记一个成员. 你也可以在类中声明常量. 本章稍后会有不同访问方式的相关讨论.

你可以在一行中列出相同访问方式的几个属性,用逗号来分隔它们. 在3.1.2中,User类有两个private属性--$password和$lastLogin. 

PHP 相关文章推荐
PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
Aug 15 PHP
PHP的异常处理类Exception的使用及说明
Jun 13 PHP
LotusPhp笔记之:Cookie组件的使用详解
May 06 PHP
destoon实现公司新闻详细页添加评论功能的方法
Jul 15 PHP
PHP使用NuSOAP调用Web服务的方法
Jul 18 PHP
php实现过滤字符串中的中文和数字实例
Jul 29 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
Sep 22 PHP
php实现简单的MVC框架实例
Sep 23 PHP
PHP 读取文本文件内容并分页显示
Jan 02 PHP
PHP和MYSQL实现分页导航思路详解
Apr 11 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
Oct 30 PHP
第二节--PHP5 的对象模型
Nov 16 #PHP
第一节--面向对象编程
Nov 16 #PHP
MYSQL数据库初学者使用指南
Nov 16 #PHP
php.ini 中文版
Oct 28 #PHP
一个可以找出源代码中所有中文的工具
Oct 25 #PHP
《APMServ 5.1.2》使用图解
Oct 23 #PHP
APMServ使用说明
Oct 23 #PHP
You might like
PHP UTF8编码内的繁简转换类
2009/07/20 PHP
PHP中使用unset销毁变量并内存释放问题
2012/07/05 PHP
php中mail函数发送邮件失败的解决方法
2014/12/24 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
PHP 自动加载的简单实现(推荐)
2016/08/12 PHP
php实现微信企业转账功能
2018/10/02 PHP
几款极品的javascript压缩混淆工具
2007/05/16 Javascript
Javascript注入技巧
2007/06/22 Javascript
JS去除右边逗号的简单方法
2013/07/03 Javascript
jquery validate 自定义验证方法介绍 日期验证
2014/02/27 Javascript
javascript面向对象之定义成员方法实例分析
2015/01/13 Javascript
JQuery实现的图文自动轮播效果插件
2015/06/19 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
2016/01/26 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
2016/06/26 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
AngularJS解决ng-if中的ng-model值无效的问题
2017/06/21 Javascript
vue实现数字滚动效果
2020/06/29 Javascript
Python中生成器和yield语句的用法详解
2015/04/17 Python
Python简单连接MongoDB数据库的方法
2016/03/15 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
2018/11/23 Python
Python设计模式之状态模式原理与用法详解
2019/01/15 Python
Tensorflow 多线程与多进程数据加载实例
2020/02/05 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
2020/02/11 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
Pytorch如何切换 cpu和gpu的使用详解
2021/03/01 Python
美丽的珠宝配饰:SmallThings
2019/09/04 全球购物
一些网络技术方面的面试题
2014/05/01 面试题
程序员岗位职责
2013/11/11 职场文书
前台领班岗位职责
2013/12/04 职场文书
消防宣传标语大全
2015/08/03 职场文书
校长新学期寄语2016
2015/12/04 职场文书
2019求职信:应届生求职信范文
2019/04/24 职场文书
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android