一步一步学习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 上传功能实例代码
Apr 13 PHP
PHP extract 将数组拆分成多个变量的函数
Jun 30 PHP
ionCube 一款类似zend的PHP加密/解密工具
Jul 25 PHP
jQuery 源码分析笔记
May 25 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
Jun 13 PHP
PHP生成短网址的3种方法代码实例
Jul 08 PHP
完美实现wordpress禁止文章修订和自动保存的方法
Nov 03 PHP
dedecms中使用php语句指南
Nov 13 PHP
php eval函数一句话木马代码
May 21 PHP
php使用curl并发减少后端访问时间的方法分析
May 12 PHP
PHP简单检测网址是否能够正常打开的方法
Sep 04 PHP
curl 出现错误的调试方法(必看)
Feb 13 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小技巧 把数组的键和值交换形成了新的数组,查找值取得键
2011/06/02 PHP
php+mysqli批量查询多张表数据的方法
2015/01/29 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
php+Memcached实现简单留言板功能示例
2017/02/15 PHP
PHP实现限制IP访问及提交次数的方法详解
2017/07/17 PHP
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
struts2 jquery 打造无限层次的树
2009/10/23 Javascript
Jquery实现鼠标移动放大图片功能实例
2015/03/25 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
javascript使用输出语句实现网页特效代码
2015/08/06 Javascript
js实现Select列表各项上移和下移的方法
2015/08/14 Javascript
Nodejs初级阶段之express
2015/11/23 NodeJs
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
2016/10/15 Javascript
基于jQuery实现一个marquee无缝滚动的插件
2017/03/09 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
angular 用拦截器统一处理http请求和响应的方法
2017/06/08 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
2017/12/26 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
vue slot 在子组件中显示父组件传递的模板
2018/03/02 Javascript
vue中使用axios post上传头像/图片并实时显示到页面的方法
2018/09/27 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
2018/11/05 Javascript
js canvas实现二维码和图片合成的海报
2020/11/19 Javascript
使用node.JS中的url模块解析URL信息
2020/02/06 Javascript
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
Python实现的北京积分落户数据分析示例
2020/03/27 Python
关于Python字符编码与二进制不得不说的一些事
2020/10/04 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
白色公司:The White Company
2017/10/11 全球购物
外贸销售员求职的自我评价
2013/11/23 职场文书
小学校长竞聘演讲稿
2014/05/16 职场文书
四风批评与自我批评范文
2014/10/14 职场文书
初婚初育证明范本
2014/11/24 职场文书
oracle通过存储过程上传list保存功能
2021/05/12 Oracle
pandas求平均数和中位数的方法实例
2021/08/04 Python
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript