一步一步学习PHP(5) 类和对象


Posted in PHP onFebruary 16, 2010

在这一节中,我们就来看看在PHP中如何创建一个类和对象。

1. 创建类

在PHP中,创建一个类和在C#/Java中基本类似,闲话少说,给大家看个最简单的例子:

<?php 
class People 
{ 
var $name; 
public function GetName() 
{ 
return $this->name; 
} 
public function SetName($name) 
{ 
$this->name=$name; 
} 
} $p=new People(); 
$p->SetName("kym"); 
echo($p->GetName()); 
?>

这里,我们就创建一个People的类,在这里有四个要点说明一下:

第一个是在PHP中,访问属性(或者方法)不是用我们所常用的点运算符(.),而是用->。

第二个是在PHP中,方法需要用function在标识,这点于Javascript很类似。

第三点是当我们声明一个变量时,需要用var,这点也与Javascript非常类似。

第四点是在PHP中,也有着public ,protected,private三个与C#同样的访问修饰符,不再赘述。

在这里,我们发现,我们可以用$p直接访问$name属性,那么我们需要对其进行控制,方法如下:

class People 
{ 
private $name; 
public function GetName() 
{ 
return $this->name; 
} 
public function SetName($name) 
{ 
$this->name=$name; 
} 
}

这时,我们在外界就无法访问到$name属性了。

还记得我们在上文中提到了可变函数么?在这里我们一样可以用可变函数来访问对象的方法:

<?php 
class People 
{ 
private $name; 
public function GetName() 
{ 
return $this->name; 
} 
public function SetName($name) 
{ 
$this->name=$name; 
} 
} $p=new People(); 
$get="GetName"; 
$set="SetName"; 
$p->$set("kym"); 
echo($p->$get()); 
?>

2. 静态方法(属性)

在PHP中声明静态方法(也可称之为类方法)与C#中是十分类似的。

<?php 
class DataBase 
{ 
public static function CreateConnection() 
{ 
echo("Success"); 
} 
} 
DataBase::CreateConnection(); 
?>

同理,声明静态属性也是一样。
<?php 
class DataBase 
{ 
static $connectionString="http://127.0.0.1"; 
public static function CreateConnection() 
{ 
echo("Success"); 
} 
} 
echo(DataBase::$connectionString); 
DataBase::CreateConnection(); 
?>

3. 类常量

在C#中,我们用const来标识常量,在PHP中也是一样。
<?php 
class DataBase 
{ 
const AUTHOR="kym"; 
static $connectionString="http://127.0.0.1"; 
public static function CreateConnection() 
{ 
echo("Success"); 
} 
} 
echo(DataBase::AUTHOR); 
echo(DataBase::$connectionString); 
DataBase::CreateConnection(); 
?>

4. 访问静态变量

我们知道,静态属性(方法)属于类本身,而变量(方法)属于对象本身,而类本身先于对象而存在,那么我们如何来在动态方法中访问静态的变量(方法)呢?在PHP中,为我们提供了self关键字。
<?php 
class DataBase 
{ 
const AUTHOR="kym"; 
static $connectionString="http://127.0.0.1"; 
public static function CreateConnection() 
{ 
echo(self::$connectionString." Success"); 
} 
} 
echo(DataBase::AUTHOR); 
echo(DataBase::$connectionString); 
DataBase::CreateConnection(); 
?>
PHP 相关文章推荐
xml+php动态载入与分页
Oct 09 PHP
php下实现在指定目录搜索指定类型文件的函数
Oct 03 PHP
PHP XML数据解析代码
May 26 PHP
PHP入门学习笔记之一
Oct 12 PHP
解析MySql与Java的时间类型
Jun 22 PHP
php中ob_flush函数和flush函数用法分析
Mar 18 PHP
PHP读取PPT文件的方法
Dec 10 PHP
基于ThinkPHP实现批量删除
Dec 18 PHP
php禁用函数设置及查看方法详解
Jul 25 PHP
Zend Framework数据库操作技巧总结
Feb 18 PHP
PHP基于GD2函数库实现验证码功能示例
Jan 27 PHP
php源码的使用方法讲解
Sep 26 PHP
php 生成静态页面的办法与实现代码详细版
Feb 15 #PHP
IP138 IP地址查询小偷实现代码
Feb 15 #PHP
PHP采集相关教程之一 CURL函数库
Feb 15 #PHP
php 数组的合并、拆分、区别取值函数集
Feb 15 #PHP
提高PHP编程效率 引入缓存机制提升性能
Feb 15 #PHP
一步一步学习PHP(4) php 函数 补充2
Feb 15 #PHP
一步一步学习PHP(3) php 函数
Feb 15 #PHP
You might like
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
PHP耦合设计模式实例分析
2018/08/08 PHP
PHP simplexml_import_dom()函数讲解
2019/02/03 PHP
phpwind放自动注册方法
2006/12/02 Javascript
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
JS控制阿拉伯数字转为中文大写示例代码
2013/09/04 Javascript
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
js类定义函数时用prototype与不用的区别示例介绍
2014/06/10 Javascript
jquery 为a标签绑定click事件示例代码
2014/06/23 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
bootstrap弹出层的多种触发方式
2017/05/10 Javascript
bootstrap-table组合表头的实现方法
2017/09/07 Javascript
Vue中Quill富文本编辑器的使用教程
2018/09/21 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
JQuery表单元素取值赋值方法总结
2020/05/12 jQuery
maptalks+three.js+vue webpack实现二维地图上贴三维模型操作
2020/08/10 Javascript
[00:32]DOTA2上海特级锦标赛 Ehome战队宣传片
2016/03/03 DOTA
Python深入学习之上下文管理器
2014/08/31 Python
跟老齐学Python之有容乃大的list(2)
2014/09/15 Python
python实现调用其他python脚本的方法
2014/10/05 Python
简单的Python抓taobao图片爬虫
2014/10/26 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
解决Python print输出不换行没空格的问题
2018/11/14 Python
Python使用微信接入图灵机器人过程解析
2019/11/04 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
如何使用repr调试python程序
2020/02/28 Python
使用Python将图片转正方形的两种方法实例代码详解
2020/04/29 Python
英国广泛的照明产品网站:Lights4living
2018/01/28 全球购物
2014年教师培训的自我评价
2014/01/03 职场文书
政府门卫岗位职责
2014/04/29 职场文书
研究生毕业论文导师评语
2014/12/31 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
2015年青年志愿者工作总结
2015/05/20 职场文书
Django分页器的用法你都了解吗
2021/05/26 Python