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 相关文章推荐
PHP4实际应用经验篇(4)
Oct 09 PHP
php 中的str_replace 函数总结
Apr 27 PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
Jun 06 PHP
PHP扩展模块memcached长连接使用方法分析
Dec 24 PHP
php实现通用的从数据库表读取数据到数组的函数实例
Mar 21 PHP
php搜索文件程序分享
Oct 30 PHP
Zend Framework动作助手Url用法详解
Mar 05 PHP
Symfony2之session与cookie用法小结
Mar 18 PHP
PHP常用文件操作函数和简单实例分析
Jun 03 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
Laravel框架路由设置与使用示例
Jun 12 PHP
Yii框架页面渲染操作实例详解
Jul 19 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 visitFile()遍历指定文件夹函数
2010/08/21 PHP
浅析十款PHP开发框架的对比
2013/07/05 PHP
PHP的拦截器实例分析
2014/11/03 PHP
php使用cookie实现记住登录状态
2015/04/27 PHP
ThinkPHP路由机制简介
2016/03/23 PHP
JavaScript中令你抓狂的魔术变量
2006/11/30 Javascript
javascript的console.log()用法小结
2012/05/31 Javascript
JS中for循序中延迟加载动态效果的具体实现
2013/08/18 Javascript
转换字符串为json对象的方法详解
2013/11/29 Javascript
JavaScript中的逻辑判断符&amp;&amp;、||与!介绍
2014/12/31 Javascript
jQuery中常用的遍历函数用法实例总结
2015/09/01 Javascript
JavaScript仿商城实现图片广告轮播实例代码
2016/02/06 Javascript
JS简单实现String转Date的方法
2016/03/02 Javascript
node.js实现爬虫教程
2020/08/25 Javascript
Bootstrap每天必学之工具提示(Tooltip)插件
2016/04/26 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
JS实现简单的抽奖转盘效果示例
2019/02/16 Javascript
vue+springboot图片上传和显示的示例代码
2020/02/14 Javascript
仿照Element-ui实现一个简易的$message方法
2020/09/14 Javascript
基于elementUI竖向表格、和并列的案例
2020/10/26 Javascript
[00:36]DOTA2上海特级锦标赛 Alliance战队宣传片
2016/03/04 DOTA
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
[01:35:53]完美世界DOTA2联赛PWL S3 Magma vs GXR 第二场 12.13
2020/12/17 DOTA
pygame学习笔记(5):游戏精灵
2015/04/15 Python
在Python程序中操作文件之isatty()方法的使用教程
2015/05/24 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
对Python 网络设备巡检脚本的实例讲解
2018/04/22 Python
python 定时器,实现每天凌晨3点执行的方法
2019/02/20 Python
python使用writerows写csv文件产生多余空行的处理方法
2019/08/01 Python
基于Python爬取京东双十一商品价格曲线
2020/10/23 Python
使用tkinter实现三子棋游戏
2021/02/25 Python
Oral-B荷兰:牙医最推荐的品牌
2020/02/25 全球购物
收款授权委托书
2014/10/02 职场文书
2015年小学语文工作总结
2015/05/25 职场文书
Python中如何处理常见报错
2022/01/18 Python