一步一步学习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 相关文章推荐
PHP4(windows版本)中的COM函数
Oct 09 PHP
《PHP边学边教》(02.Apache+PHP环境配置――下篇)
Dec 13 PHP
新手配置 PHP 调试环境(IIS+PHP+MYSQL)
Jan 10 PHP
微盾PHP脚本加密专家php解密算法
Sep 13 PHP
Smarty的配置与高级缓存技术分享
Jun 05 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
Jul 18 PHP
php检测文件编码的方法示例
Apr 25 PHP
php实现简单文件下载的方法
Jan 30 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
Dec 11 PHP
PHP图形计数器程序显示网站用户浏览量
Jul 20 PHP
Yii框架弹出框功能示例
Jan 07 PHP
yii框架使用分页的方法分析
Jul 25 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+mysql保存和输出文件
2006/10/09 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
PHP创建/删除/复制文件夹、文件
2016/05/03 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
个人总结的一些关于String、Function、Array的属性和用法
2007/01/10 Javascript
JavaScript 高效运行代码分析
2010/03/18 Javascript
js下判断 iframe 是否加载完成的完美方法
2010/10/26 Javascript
js跑马灯代码(自写)
2013/04/17 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
详解angular 中的自定义指令之详解API
2017/06/20 Javascript
Angular模版驱动表单的使用总结
2018/05/05 Javascript
解决vue的变量在settimeout内部效果失效的问题
2018/08/30 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
JavaScript中Dom操作实例详解
2019/07/08 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
python使用PyV8执行javascript代码示例分享
2013/12/04 Python
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
python使用opencv进行人脸识别
2017/04/07 Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
2018/05/24 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
Python 日期的转换及计算的具体使用详解
2020/01/16 Python
python实现全排列代码(回溯、深度优先搜索)
2020/02/26 Python
美国特价机票专家:Airfarewatchdog
2018/01/24 全球购物
美国最大的在线生存商店:Survival Frog
2020/12/13 全球购物
.net C#面试题
2012/08/28 面试题
音乐节策划方案
2014/06/09 职场文书
答谢酒会主持词
2015/07/02 职场文书
开工典礼致辞
2015/07/29 职场文书
写作之关于描写老人的好段摘抄
2019/11/14 职场文书
Typescript类型系统FLOW静态检查基本规范
2022/05/25 Javascript