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 相关文章推荐
PHP中替换换行符的几种方法小结
Oct 15 PHP
Mysql中分页查询的两个解决方法比较
May 02 PHP
判断php数组是否为索引数组的实现方法
Jun 13 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
Jun 13 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
Jul 04 PHP
thinkphp模板的包含与渲染实例分析
Nov 26 PHP
PHP 接入支付宝即时到账功能
Sep 18 PHP
php上传excel表格并获取数据
Apr 27 PHP
PHP children()函数讲解
Feb 03 PHP
php简单检测404页面的方法示例
Aug 23 PHP
Yii框架的redis命令使用方法简单示例
Oct 15 PHP
php实例化对象的实例方法
Nov 17 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使之能同时支持GIF和JPEG
2006/10/09 PHP
PHP 文件扩展名 获取函数
2009/06/03 PHP
PHP中的按位与和按位或操作示例
2014/01/27 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
PHP批量生成图片缩略图的方法
2015/06/18 PHP
CI框架集成Smarty的方法分析
2016/05/17 PHP
总结AJAX相关JS代码片段和浏览器模型
2007/08/15 Javascript
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
web网页按比例显示图片实现原理及js代码
2013/08/09 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
实例讲解JS中setTimeout()的用法
2016/01/28 Javascript
Bootstrap模块dropdown实现下拉框响应
2016/05/22 Javascript
深入理解逻辑表达式的用法 与或非的用法
2016/06/06 Javascript
JavaScript Promise 用法
2016/06/14 Javascript
javascript轮播图算法
2016/10/21 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
jQuery实现checkbox全选、反选及删除等操作的方法详解
2019/08/02 jQuery
Vue.js中Line第三方登录api的实现代码
2020/06/29 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
[01:02]2014 DOTA2国际邀请赛中国区预选赛 现场抢先看
2014/05/22 DOTA
对python的输出和输出格式详解
2018/12/08 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
2019/11/08 Python
Ooni英国官网:披萨烤箱
2020/05/31 全球购物
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
laravel使用redis队列实例讲解
2021/03/23 PHP
自荐信如何制作?
2014/02/21 职场文书
房屋授权委托书范本
2014/10/07 职场文书
出国签证在职证明范本
2014/11/24 职场文书
教师个人年终总结
2015/02/11 职场文书
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
2021/06/07 Python
24年收藏2000多部退役军用电台
2022/02/18 无线电
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL
Win11 Beta 22621.601 和 22622.601今日发布 KB5017384修复内容汇总
2022/09/23 数码科技