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 相关文章推荐
DedeCMS 核心类TypeLink.class.php摘要笔记
Apr 07 PHP
php中邮箱地址正则表达式实现与详解
Apr 24 PHP
PHP程序级守护进程的实现与优化的使用概述
May 02 PHP
如何判断php数组的维度
Jun 10 PHP
浅析PHP的ASCII码转换类
Jul 05 PHP
PHP读取RSS(Feed)简单实例
Jun 12 PHP
ThinkPHP分页实例
Oct 15 PHP
PHP之uniqid()函数用法
Nov 03 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
Nov 19 PHP
php导入大量数据到mysql性能优化技巧
Dec 29 PHP
PHP输出日历表代码实例
Mar 27 PHP
PHP判断当前使用的是什么浏览器(推荐)
Oct 27 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中把对象转换为关联数组代码分享
2015/04/09 PHP
PDO的安全处理与事物处理方法
2016/10/31 PHP
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
2007/02/09 Javascript
一个javascript参数的小问题
2008/03/02 Javascript
jQuery 页面载入进度条实现代码
2009/02/08 Javascript
基于Jquery实现表格动态分页实现代码
2011/06/21 Javascript
模拟jQuery中的ready方法及实现按需加载css,js实例代码
2013/09/27 Javascript
node.js中的fs.createReadStream方法使用说明
2014/12/17 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
用JavaScript做简易的购物车的代码示例
2017/10/20 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
ES6中let、const的区别及变量的解构赋值操作方法实例分析
2019/10/15 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
2020/02/10 Javascript
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
2020/04/04 jQuery
Python用 KNN 进行验证码识别的实现方法
2018/02/06 Python
python脚本实现验证码识别
2018/06/07 Python
Python3爬虫之urllib携带cookie爬取网页的方法
2018/12/28 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
django中ImageField的使用详解
2020/12/21 Python
施华洛世奇英国官网:SWAROVSKI英国
2017/03/13 全球购物
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
毕业生优秀推荐信
2013/11/26 职场文书
求职推荐信范文
2013/12/01 职场文书
市场营销管理制度
2014/01/29 职场文书
幼儿园校车司机的岗位职责
2014/01/30 职场文书
宣传标语大全
2014/07/01 职场文书
检举信的写法
2019/04/10 职场文书
SQL Server——索引+基于单表的数据插入与简单查询【1】
2021/04/05 SQL Server
mysql 8.0.24版本安装配置方法图文教程
2021/05/12 MySQL
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android
CPU不支持Windows11系统怎么办
2021/11/21 数码科技