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 09 PHP
php连接mssql的一些相关经验及注意事项
Feb 05 PHP
php并发对MYSQL造成压力的解决方法
Feb 21 PHP
简单的php数据库操作类代码(增,删,改,查)
Apr 08 PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 PHP
discuz图片顺序混乱解决方案
Jul 29 PHP
ThinkPHP中order()使用方法详解
Apr 19 PHP
PHP类和对象相关系统函数与运算符小结
Sep 28 PHP
PHP XML和数组互相转换详解
Oct 26 PHP
深入浅析PHP的session反序列化漏洞问题
Jun 15 PHP
PHP面向对象程序设计之构造方法和析构方法详解
Jun 13 PHP
PHP超全局变量实现原理及代码解析
Sep 01 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递归删除目录几个代码实例
2014/04/21 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
Javascript 篱式条件判断
2008/08/22 Javascript
JavaScript 对象、函数和继承
2009/07/07 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
jquery属性过滤选择器使用示例
2013/06/18 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
对frameset、frame、iframe的js操作示例代码
2013/08/16 Javascript
Js实现滚动变色的文字效果
2014/06/16 Javascript
javascript检查浏览器是否支持flash的实现代码
2014/08/14 Javascript
Javascript检查图片大小不要让大图片撑破页面
2014/11/04 Javascript
Javascript中数组sort和reverse用法分析
2014/12/30 Javascript
javascript实现列表滚动的方法
2015/07/30 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
2015/10/30 Javascript
Javascript中神奇的this
2016/01/20 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
jQuery Plupload上传插件的使用
2017/04/19 jQuery
JS实现上传图片的三种方法并实现预览图片功能
2017/07/14 Javascript
jQuery获取table表中的td标签(实例讲解)
2017/07/28 jQuery
零基础之Node.js搭建API服务器的详解
2019/03/08 Javascript
vue-router的两种模式的区别
2019/05/30 Javascript
Python交换变量
2008/09/06 Python
python循环监控远程端口的方法
2015/03/14 Python
基于python的七种经典排序算法(推荐)
2016/12/08 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
Pytorch实现的手写数字mnist识别功能完整示例
2019/12/13 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
Mio Skincare美国官网:身体紧致及孕期身体护理
2017/03/05 全球购物
阿迪达斯英国官方网站:adidas英国
2019/08/13 全球购物
房地产项目建议书
2014/03/12 职场文书
党员目标管理责任书
2014/07/25 职场文书
2014年自愿离婚协议书
2014/10/10 职场文书
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS
httpclient调用远程接口的方法
2022/08/14 Java/Android