一步一步学习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开源XNA 聚合程序发布 下载
Jul 13 PHP
php-accelerator网站加速PHP缓冲的方法
Jul 30 PHP
PHP Pear 安装及使用
Mar 19 PHP
有关JSON以及JSON在PHP中的应用
Apr 09 PHP
浅析echo(),print(),print_r(),return之间的区别
Nov 27 PHP
跟我学Laravel之请求(Request)的生命周期
Oct 15 PHP
PHP结合Jquery和ajax实现瀑布流特效
Jan 07 PHP
php session 写入数据库
Feb 13 PHP
PHP高精确度运算BC函数库实例详解
Aug 15 PHP
php微信开发之关注事件
Jun 14 PHP
详解php命令注入攻击
Apr 06 PHP
Laravel中正确地返回HTTP状态码方法示例
Sep 10 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
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
2011/06/30 PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
2016/03/05 PHP
CI映射(加载)数据到view层的方法
2016/03/28 PHP
PHP基于SMTP协议实现邮件发送实例代码
2017/04/27 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
FF IE兼容性的修改小结
2009/09/02 Javascript
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
2011/08/28 Javascript
Jquery中ajax方法data参数的用法小结
2014/02/12 Javascript
js与C#进行时间戳转换
2014/11/14 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
js实现仿Windows风格选项卡和按钮效果实例
2015/05/13 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
JavaScript实现LI列表数据绑定的方法
2015/08/04 Javascript
如何通过js实现图片预览功能【附实例代码】
2016/03/30 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
小程序红包雨的实现示例
2019/02/19 Javascript
vue项目中引入Sass实例方法
2019/08/27 Javascript
vue 实现v-for循环回来的数据动态绑定id
2019/11/07 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
2020/01/19 Javascript
JS事件循环机制event loop宏任务微任务原理解析
2020/08/04 Javascript
[10:53]2018DOTA2国际邀请赛寻真——EG
2018/08/11 DOTA
Python文件与文件夹常见基本操作总结
2016/09/19 Python
flask框架使用orm连接数据库的方法示例
2018/07/16 Python
python3实现微型的web服务器
2019/09/03 Python
Python3.8对可迭代解包的改进及用法详解
2019/10/15 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
pytorch进行上采样的种类实例
2020/02/18 Python
Django REST Swagger实现指定api参数
2020/07/07 Python
KENZO官网:高田贤三在法国创立的品牌
2019/05/16 全球购物
亿阳信通股份有限公司笔试题(C#)
2016/03/04 面试题
初中家长评语大全
2014/12/26 职场文书
赤壁观后感(2)
2015/06/15 职场文书
2016年小学生新年寄语
2015/08/18 职场文书
党风廉洁教育心得体会
2016/01/20 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
http通过StreamingHttpResponse完成连续的数据传输长链接方式
2022/02/12 Python