一步一步学习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和ACCESS写聊天室(一)
Oct 09 PHP
PHP iconv 解决utf-8和gb2312编码转换问题
Apr 12 PHP
php字符串分割函数explode的实例代码
Feb 07 PHP
php读取文件内容的几种方法详解
Jun 26 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
Sep 23 PHP
设置php页面编码的两种方法示例介绍
Mar 03 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
Mar 25 PHP
php实现telnet功能示例
Apr 08 PHP
php使用ob_start()实现图片存入变量的方法
Nov 14 PHP
php通过排列组合实现1到9数字相加都等于20的方法
Aug 03 PHP
CodeIgniter 完美解决URL含有中文字符串
May 13 PHP
php 如何获取文件的后缀名
Jun 05 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
Win7下手动安装apache2.2、php5.4笔记
2015/04/03 PHP
PHP生成和获取XML格式数据的方法
2016/03/04 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
PDO实现学生管理系统
2020/03/21 PHP
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
2014/08/15 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
JavaScript闭包实例详解
2016/06/03 Javascript
Angularjs 创建可复用组件实例代码
2016/10/09 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
利用forever和pm2部署node.js项目过程
2017/05/10 Javascript
vue-cli脚手架-bulid下的配置文件
2018/03/27 Javascript
Javascript 之封装(Package)
2018/09/14 Javascript
JS使用数组实现的队列功能示例
2019/03/04 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
[53:10]Secret vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
Python中Selenium模拟JQuery滑动解锁实例
2017/07/26 Python
python字典操作实例详解
2017/11/16 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
python筛选出两个文件中重复行的方法
2018/05/31 Python
python实现机器学习之多元线性回归
2018/09/06 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
Python实现爬取马云的微博功能示例
2019/02/16 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
2019/10/27 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
分享一个H5原生form表单的checkbox特效代码
2018/02/26 HTML / CSS
HTML5到底会有什么发展?HTML5的前景展望
2015/07/07 HTML / CSS
劳资人员岗位职责
2013/12/19 职场文书
初中同学聚会邀请函
2014/02/03 职场文书
暑期社会实践方案
2014/02/05 职场文书
买卖协议书范本
2014/04/21 职场文书
应届生求职信
2014/05/31 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书