一步一步学习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中include()与require()的区别说明
Mar 10 PHP
《PHP编程最快明白》第七讲:php图片验证码与缩略图
Nov 01 PHP
PHP随机数生成代码与使用实例分析
Apr 08 PHP
PHP新手入门学习方法
May 08 PHP
php获取数组长度的方法(有实例)
Oct 27 PHP
jQuery Mobile + PHP实现文件上传
Dec 12 PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 PHP
PHP微信支付结果通知与回调策略分析
Jan 10 PHP
php根据命令行参数生成配置文件详解
Mar 15 PHP
laravel 修改记住我功能的cookie保存时间的方法
Oct 14 PHP
解决laravel查询构造器中的别名问题
Oct 17 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 Redis内存占用
2017/03/23 PHP
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
js Dialog 去掉右上角的X关闭功能
2014/04/23 Javascript
jQuery内置的AJAX功能和JSON的使用实例
2014/07/27 Javascript
JavaScript中的pow()方法使用详解
2015/06/15 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
2016/10/12 Javascript
探讨AngularJs中ui.route的简单应用
2016/11/16 Javascript
SelecT下拉框选中和取值的解决方法
2016/11/22 Javascript
jQuery Validate让普通按钮触发表单验证的方法
2016/12/15 Javascript
js实现颜色阶梯渐变效果(Gradient算法)
2017/03/21 Javascript
bootstrap table服务端实现分页效果
2017/08/10 Javascript
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
2018/01/18 Javascript
angular4 共享服务在多个组件中数据通信的示例
2018/03/30 Javascript
vue父组件给子组件的组件传值provide inject的方法
2019/10/23 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
2019/11/12 Javascript
原生js实现随机点名
2020/07/05 Javascript
使用Python来开发Markdown脚本扩展的实例分享
2016/03/04 Python
pyspark 读取csv文件创建DataFrame的两种方法
2018/06/07 Python
python得到一个excel的全部sheet标签值方法
2018/12/10 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
2019/08/20 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
如何基于Python批量下载音乐
2019/11/11 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
css3打造一款漂亮的卡哇伊按钮
2013/03/20 HTML / CSS
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
大学同学聚会邀请函
2014/01/19 职场文书
竞选班干部演讲稿
2014/04/24 职场文书
教师一帮一活动总结
2014/07/08 职场文书
初中团委工作总结
2015/08/13 职场文书
推荐六本经典文学奖书籍:此生必读
2019/08/22 职场文书
python中print格式化输出的问题
2021/04/16 Python
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python
解决Golang中ResponseWriter的一个坑
2021/04/27 Golang
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis