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 相关文章推荐
mysql中存储过程、函数的一些问题
Feb 14 PHP
六酷社区论坛HOME页清新格调免费版 下载
Mar 07 PHP
PHP实现MySQL更新记录的代码
Jun 07 PHP
php生成二维码的几种方式整理及使用实例
Jun 03 PHP
php使用curl抓取qq空间的访客信息示例
Feb 28 PHP
php写入、删除与复制文件的方法
Jun 20 PHP
php检查字符串中是否有外链的方法
Jul 29 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
Sep 26 PHP
php自定义函数实现二维数组按指定key排序的方法
Sep 29 PHP
PHP查询分页的实现代码
Jun 09 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
Sep 03 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 05 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实现域名whois查询的代码(数据源万网、新网)
2010/02/22 PHP
使用php批量删除数据库下所有前缀为prefix_的表
2014/06/09 PHP
php检查日期函数checkdate用法实例
2015/03/19 PHP
yii2实现根据时间搜索的方法
2016/05/25 PHP
Laravel程序架构设计思路之使用动作类
2018/06/07 PHP
Yii框架页面渲染操作实例详解
2019/07/19 PHP
js树形控件脚本代码
2008/07/24 Javascript
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
2010/06/19 Javascript
来自国外的30个基于jquery的Web下拉菜单
2012/06/22 Javascript
中国地区三级联动下拉菜单效果分析
2012/11/15 Javascript
javascript表单验证使用示例(javascript验证邮箱)
2014/01/07 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
2016/04/18 Javascript
进阶之初探nodeJS
2017/01/24 NodeJs
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
微信小程序 获取二维码实例详解
2017/06/23 Javascript
JS FormData上传文件的设置方法
2017/07/05 Javascript
微信小程序文章详情页面实现代码
2018/09/10 Javascript
策略模式实现 Vue 动态表单验证的方法
2019/09/16 Javascript
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
Python下载网络文本数据到本地内存的四种实现方法示例
2018/02/05 Python
Python面向对象之静态属性、类方法与静态方法分析
2018/08/24 Python
python pandas消除空值和空格以及 Nan数据替换方法
2018/10/30 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
python异步Web框架sanic的实现
2020/04/27 Python
怎么快速自学python
2020/06/22 Python
英国领先的奢侈品零售商之一:CRUISE
2016/12/02 全球购物
体育教育个人自荐信范文
2013/12/01 职场文书
个人简历自荐信
2013/12/05 职场文书
市场营销专业毕业生求职信
2014/03/26 职场文书
教师正风肃纪剖析材料
2014/10/20 职场文书
违章停车检讨书
2014/10/21 职场文书
优秀护士事迹材料
2014/12/25 职场文书
2015年乡镇财政工作总结
2015/05/19 职场文书
教师节简报
2015/07/20 职场文书
一文搞懂Python Sklearn库使用
2021/08/23 Python