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 相关文章推荐
实现分十页分向前十页向后十页的处理
Oct 09 PHP
MySQL相关说明
Jan 15 PHP
FleaPHP的安全设置方法
Sep 15 PHP
php 什么是PEAR?(第二篇)
Mar 19 PHP
PHP 变量的定义方法
Jan 26 PHP
PHP中用hash实现的数组
Jul 17 PHP
使用PHP生成PDF方法详解
Jan 23 PHP
thinkPHP模板算术运算相关函数用法分析
Jul 12 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
Oct 08 PHP
Yii2实现增删改查后留在当前页的方法详解
Jan 13 PHP
swoole_process实现进程池的方法示例
Oct 29 PHP
php设计模式之工厂模式用法经典实例分析
Sep 20 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
Zend的MVC机制使用分析(一)
2013/05/02 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
PHP中PCRE正则解析代码详解
2019/04/26 PHP
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
jQuery学习基础知识小结
2010/11/25 Javascript
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
js有序数组的连接问题
2013/10/01 Javascript
JS仿百度搜索自动提示框匹配查询功能
2013/11/21 Javascript
jQuery获得document和window对象宽度和高度的方法
2015/03/25 Javascript
javascript递归回溯法解八皇后问题
2015/04/22 Javascript
基于javascript显示当前时间以及倒计时功能
2016/03/18 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
Vue创建头部组件示例代码详解
2018/10/23 Javascript
写一个Vue Popup组件
2019/02/25 Javascript
重学JS 系列:聊聊继承(推荐)
2019/04/11 Javascript
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
[47:46]完美世界DOTA2联赛 Magma vs GXR 第三场 11.07
2020/11/10 DOTA
在Django中创建第一个静态视图
2015/07/15 Python
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
Python的numpy库下的几个小函数的用法(小结)
2019/07/12 Python
python破解bilibili滑动验证码登录功能
2019/09/11 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
python使用opencv resize图像不进行插值的操作
2020/07/05 Python
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
Otticanet英国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/02/10 全球购物
计算机专业个人求职信范例
2013/09/23 职场文书
努力学习保证书
2015/02/26 职场文书
学校国庆节活动总结
2015/03/23 职场文书
2016年大学生暑假爱心支教活动策划书
2015/11/26 职场文书
团队合作精神学习心得体会
2016/01/19 职场文书
导游词之镇江焦山
2019/11/21 职场文书
七年级作文之下雨天
2019/12/23 职场文书
HTML中的表单元素介绍
2022/02/28 HTML / CSS