一步一步学习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 进程锁定问题分析研究
Nov 24 PHP
PHP5 面向对象(学习记录)
Dec 02 PHP
AJAX的跨域访问-两种有效的解决方法介绍
Jun 22 PHP
PHP常用的缓存技术汇总
May 05 PHP
PHP中IP地址与整型数字互相转换详解
Aug 20 PHP
ThinkPHP文件上传实例教程
Aug 22 PHP
thinkphp特殊标签用法概述
Nov 24 PHP
php读取csv文件并输出的方法
Mar 14 PHP
php-fpm服务启动脚本的方法
Apr 27 PHP
在Laravel中使用DataTables插件的方法
May 29 PHP
PHP中str_split()函数的用法讲解
Apr 11 PHP
php 多个变量指向同一个引用($b = &amp;$a)用法分析
Nov 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
smtp邮件发送一例
2006/10/09 PHP
php生成xml简单实例代码
2009/12/16 PHP
php页面防重复提交方法总结
2013/11/25 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
2014/01/03 PHP
PHP实现Unicode编码相互转换的方法示例
2020/11/17 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
treepanel动态加载数据实现代码
2012/12/15 Javascript
常见的原始JS选择器使用方法总结
2014/04/09 Javascript
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
JS监听事件的叠加和移除功能
2018/11/19 Javascript
vue的keep-alive中使用EventBus的方法
2019/04/23 Javascript
微信小程序实现日期格式化和倒计时
2020/11/01 Javascript
小程序如何获取多个formId实现详解
2019/09/20 Javascript
微信小程序实现星星评分效果
2020/11/01 Javascript
Python的gevent框架的入门教程
2015/04/29 Python
python实现mysql的读写分离及负载均衡
2018/02/04 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
Python lxml模块的基本使用方法分析
2019/12/21 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
免费获得微软MCSD证书赶快行动吧!
2012/11/13 HTML / CSS
曼城官方网上商店:Manchester City
2019/09/10 全球购物
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
《小小竹排画中游》教学反思
2014/02/26 职场文书
房地产促销活动方案
2014/03/01 职场文书
房产公证委托书范本
2014/09/20 职场文书
技能培训通讯稿
2015/07/18 职场文书
2016年师德学习心得体会
2016/01/12 职场文书
个人工作总结(管理人员)范文
2019/08/13 职场文书
创业计划书之物流运送
2019/09/17 职场文书
2019年公司快递收发管理制度模板
2019/11/20 职场文书
Html分层的box-shadow效果的示例代码
2021/03/30 HTML / CSS
python实现剪贴板的操作
2021/07/01 Python