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 5.0对象模型深度探索之绑定
Sep 05 PHP
精通php的十大要点(上)
Feb 04 PHP
PHP中防止SQL注入实现代码
Feb 19 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
Jul 08 PHP
PHP判断文章里是否有图片的简单方法
Jul 26 PHP
php生成txt文件实例代码介绍
Apr 28 PHP
php实现xml与json之间的相互转换功能实例
Jul 07 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
Aug 17 PHP
php 变量引用与变量销毁机制详细介绍
Dec 05 PHP
thinkPHP框架实现的无限回复评论功能示例
Jun 09 PHP
laravel 解决多库下的DB::transaction()事务失效问题
Oct 21 PHP
PHP array_reverse() 函数原理及实例解析
Jul 14 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 编程请选择正确的文本编辑软件
2006/12/21 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
2014/06/20 PHP
详解PHP执行定时任务的实现思路
2015/12/21 PHP
PHP cURL获取微信公众号access_token的实例
2018/04/28 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
PHP中Static(静态)关键字功能与用法实例分析
2019/04/05 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
js继承 Base类的源码解析
2008/12/30 Javascript
JQuery 学习笔记 选择器之二
2009/07/23 Javascript
javascript小数计算出现近似值的解决办法
2010/02/06 Javascript
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
2015/08/28 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
2016/02/04 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
Vue.js双向绑定实现原理详解
2016/12/22 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
2017/09/20 Javascript
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
2018/03/09 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
微信小程序错误this.setData报错及解决过程
2019/09/18 Javascript
9个JavaScript日常开发小技巧
2020/10/06 Javascript
[01:58]DOTA2上海特级锦标赛现场采访:RTZ这个ID到底好不好
2016/03/25 DOTA
python 内置函数filter
2017/06/01 Python
Python下载网络文本数据到本地内存的四种实现方法示例
2018/02/05 Python
python模块smtplib实现纯文本邮件发送功能
2018/05/22 Python
Python Process多进程实现过程
2019/10/22 Python
python实现简易淘宝购物
2019/11/22 Python
广州足迹信息技术有限公司Java软件工程师试题
2014/02/15 面试题
先进事迹报告会感言
2014/01/24 职场文书
作风转变心得体会
2014/09/02 职场文书
2014年科技工作总结
2014/11/26 职场文书
2015年保送生自荐信
2015/03/24 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书