PHP面向对象程序设计方法实例详解


Posted in PHP onDecember 24, 2016

本文实例分析了PHP面向对象程序设计方法。分享给大家供大家参考,具体如下:

PHP5开始支持面向对象,示例如下:

<?php
class classname{
  var $attr1;
  var $attr2;
  public $attribute;
  const PI = 3.14;
  // 构造函数
  function __construct($param = 'default'){
    echo "Constructor called with parameter $param<br />";
  }
  // 析构函数
  function __destruct(){
    echo '<br />destruct';
  }
  //
  function oper1(){
    echo 'oper1<br />';
  }
  function oper2($param){
    $this->attr1 = $param;
    echo $this->attr1;
  }
  protected function oper3(){
    echo 'this is protected function<br />';
  }
  // 禁止继承
  final function oper5(){
  }
  function __get($name){
    return $this->$name;
  }
  function __set($name, $value){
    $this->$name = $value;
  }
  // 静态方法
  static function double($param){
    return $param * $param;
  }
}
$a = new classname('First');
$b = new classname('Second');
$c = new classname();
$c->oper2("hello");
echo '<br />';
echo $c->attr1;
echo '<br /><br />';
echo ' Per-Class常量 classname::PI -'.classname::PI;
echo '<br />静态方法: classname::double(3) - ' . classname::double(3);
echo '<br />';
// 实现继承
echo '实现继承<br />';
class B extends classname{
  function oper4(){
    $this->oper3(); // protected方法只能在
  }
  function oper1(){ // 重载
    echo 'this is class B /'s oper1. <br />';
  }
}
$d = new B("forth");
$d->oper1();
$d->oper4();
// 接口
interface Displayable
{
  function display();
  function show();
}
class C implements Displayable
{
  function display(){
    echo '这是对应接口的方法.<br />';
  }
  function show(){}
}
$e = new C();
$e->display();
echo '检查$e是否为C的实例:';
echo ($e instanceof C) ? 'Yes':'No';
// 克隆对象
$f = clone $e;
echo '<br /><br />可以使用__clone()方法,在使用clone关键字时调用';
// 抽象类
abstract class E{}
// $f = new E(); // 这行将报错,不能实例化抽象类
// 参数重载,多态
class F{
  public $a = 1;
  public $b = 2;
  public $c = 3;
  function displayString($elem){
    echo '<br />string:'.$elem;
  }
  function displayInt($elem){
    echo '<br />int:'.$elem;
  }
  // 注意参数$p,是作为数组传入,必须使用下标访问
  function __call($method, $p){
    if ($method == 'display'){
      if (is_string($p[0])){
        $this->displayString($p[0]);
      } else {
        $this->displayInt($p[0]);
      }
    }
  }
}
$g = new F();
$g->display('abc');
// 迭代器,读出实例的所有属性
foreach ($g as $att){
  echo '<br />'.$att;
}
// 反射
echo '<br />';
$class = new ReflectionClass('F');
echo '<pre>';
echo $class;
echo '</pre>';
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
IStream与TStream之间的相互转换
Aug 01 PHP
php判断变量类型常用方法
Apr 24 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
Jun 09 PHP
php实现监听事件
Nov 06 PHP
php中autoload的用法总结
Nov 08 PHP
详谈PHP文件目录基础操作
Nov 11 PHP
PHP+Ajax实现验证码的实时验证
Jul 20 PHP
PHP命名空间namespace用法实例分析
Sep 27 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
Mar 15 PHP
php实现留言板功能(会话控制)
May 23 PHP
详解json在php中的应用
Sep 30 PHP
php中array_fill函数的实例用法
Mar 02 PHP
PHP数据库处理封装类实例
Dec 24 #PHP
如何判断php mysqli扩展类是否开启
Dec 24 #PHP
Thinkphp框架中D方法与M方法的区别
Dec 23 #PHP
ThinkPHP 整合Bootstrap Ajax分页样式
Dec 23 #PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
Dec 23 #PHP
php的4种常用运行方式详解
Dec 22 #PHP
php curl 模拟登录并获取数据实例详解
Dec 22 #PHP
You might like
PHP+MySQL 制作简单的留言本
2009/11/02 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
jquery中this的使用说明
2010/09/06 Javascript
Javascript的并行运算实现代码
2010/11/19 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
2016/05/11 Javascript
深入理解JavaScript单体内置对象
2016/06/06 Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
2016/09/21 Javascript
jQuery继承extend用法详解
2016/10/10 Javascript
vue.js表格分页示例
2016/10/18 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
javascript 正则表达式分组、断言详解
2017/04/20 Javascript
基于Bootstrap框架菜鸟入门教程(推荐)
2017/09/17 Javascript
使用Vue做一个简单的todo应用的三种方式的示例代码
2018/10/20 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
2018/12/05 jQuery
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
python基于urllib实现按照百度音乐分类下载mp3的方法
2015/05/25 Python
Python编程之序列操作实例详解
2017/07/22 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
Gtech官方网站:地毯清洁器、吸尘器及园艺设备
2018/05/23 全球购物
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
纬创Java面试题笔试题
2014/10/02 面试题
小学生红领巾广播稿
2014/01/21 职场文书
一年级语文教学反思
2014/02/13 职场文书
赡养老人协议书
2014/04/21 职场文书
委托协议书范本
2014/04/22 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
项目负责人任命书
2014/06/04 职场文书
初中毕业典礼演讲稿
2014/09/09 职场文书
教师党员个人整改措施
2014/10/27 职场文书
苏州园林导游词
2015/02/03 职场文书
Python中文纠错的简单实现
2021/07/07 Python
python解析json数据
2022/04/29 Python