一步一步学习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 相关文章推荐
配置最新的PHP加MYSQL服务器
Oct 09 PHP
攻克CakePHP系列一 连接MySQL数据库
Oct 22 PHP
攻克CakePHP系列二 表单数据显示
Oct 22 PHP
PHP 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
Jan 30 PHP
PHP+JS+rsa数据加密传输实现代码
Mar 23 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
Jun 30 PHP
thinkphp中html:list标签传递多个参数实例
Oct 30 PHP
浅析iis7.5安装配置php环境
May 10 PHP
php的debug相关函数用法示例
Jul 11 PHP
php四种定界符详解
Feb 16 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
Jul 18 PHP
Yii框架操作cookie与session的方法实例详解
Sep 04 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
Access数据库导入Mysql的方法之一
2006/10/09 PHP
PHP 反射机制实现动态代理的代码
2008/10/22 PHP
10个实用的PHP正则表达式汇总
2014/10/23 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2016/05/13 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
2016/08/23 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
2020/02/10 PHP
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
jQuery 遍历函数详解
2015/07/05 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
详解如何在你的Vue项目配置vux
2018/06/04 Javascript
js中let能否完全替代IIFE
2019/06/15 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
Vue.js实现大转盘抽奖总结及实现思路
2019/10/09 Javascript
微信小程序实现滑动翻页效果(完整代码)
2019/12/06 Javascript
js中Function引用类型常见有用的方法和属性详解
2019/12/11 Javascript
vue实现图片懒加载的方法分析
2020/02/05 Javascript
Vue实现一种简单的无限循环滚动动画的示例
2021/01/10 Vue.js
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
[02:35]DOTA2英雄基础教程 狙击手
2014/01/14 DOTA
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python基础教程之序列详解
2014/08/29 Python
详解python脚本自动生成需要文件实例代码
2017/02/04 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
2019/11/06 Python
python 浅谈serial与stm32通信的编码问题
2019/12/18 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
平安工地汇报材料
2014/08/19 职场文书
公安局副政委班子个人对照检查材料
2014/10/04 职场文书
岳庙导游词
2015/02/04 职场文书
毕业生自荐信范文
2015/03/05 职场文书
DE1103使用报告
2022/04/05 无线电