第三节 定义一个类 [3]


Posted in PHP onOctober 09, 2006

当你声明一个类,你需要列出对象应有的所有变量和所有函数—被称为属性和方法. 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 相关文章推荐
与数据库连接
Oct 09 PHP
php,ajax实现分页
Mar 27 PHP
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
Jul 04 PHP
CURL状态码列表(详细)
Jun 27 PHP
zf框架的zend_cache缓存使用方法(zend框架)
Mar 14 PHP
ThinkPHP中Session用法详解
Nov 29 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
Dec 22 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
Dec 26 PHP
php+xml编程之xpath的应用实例
Jan 24 PHP
PHP超牛逼无限极分类生成树方法
May 11 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
May 02 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
Zend引擎的发展 [15]
Oct 09 #PHP
第五节 克隆 [5]
Oct 09 #PHP
第六节 访问属性和方法 [6]
Oct 09 #PHP
第八节 访问方式 [8]
Oct 09 #PHP
第九节 绑定 [9]
Oct 09 #PHP
第十节 抽象方法和抽象类 [10]
Oct 09 #PHP
Extended CHM PHP 语法手册之 DIY
Oct 09 #PHP
You might like
评分9.0以上的动画电影,剧情除了经典还很燃
2020/03/04 日漫
4月1日重磅发布!《星际争霸II》6.0.0版本更新
2020/04/09 星际争霸
php从右向左/从左向右截取字符串的实现方法
2011/11/28 PHP
PHP中对于浮点型的数据需要用不同的方法解决
2014/03/11 PHP
php实现读取手机客户端浏览器的类
2015/01/09 PHP
php文件上传及下载附带显示文件及目录功能
2017/04/27 PHP
PHP笛卡尔积实现原理及代码实例
2020/12/09 PHP
Jquery 最近浏览过的商品的功能实现代码
2010/05/14 Javascript
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
Javascript中找到子元素在父元素内相对位置的代码
2012/07/21 Javascript
javascript动态加载三
2012/08/22 Javascript
JS跨域总结
2012/08/30 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
2015/02/25 Javascript
详解javascript中的事件处理
2015/11/06 Javascript
jQuery validate验证插件使用详解
2016/05/11 Javascript
使用jQuery制作Web页面遮罩层插件的实例教程
2016/05/26 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
2017/09/18 Javascript
js实现上传并压缩图片效果
2018/01/10 Javascript
Vant+postcss-pxtorem 实现浏览器适配功能
2021/02/05 Javascript
Python实现文件按照日期命名的方法
2015/07/09 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
Python time库基本使用方法分析
2019/12/13 Python
安装多个版本的TensorFlow的方法步骤
2020/04/21 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
python-jwt用户认证食用教学的实现方法
2021/01/19 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
三星加拿大官方网上商店:Samsung CA
2020/12/18 全球购物
丧事主持词大全
2014/04/02 职场文书
给校长的建议书500字
2014/05/15 职场文书
护林防火标语
2014/06/27 职场文书
反对四风问题自我剖析材料
2014/09/29 职场文书
2015年科研工作总结范文
2015/05/13 职场文书
《葡萄沟》教学反思
2016/02/23 职场文书