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 相关文章推荐
Oracle 常见问题解答
Oct 09 PHP
PHP curl_setopt()函数实例代码与参数分析
Jun 02 PHP
php jq jquery getJSON跨域提交数据完整版
Sep 13 PHP
php实现按文件名搜索文件的远程文件查找器
May 10 PHP
js+php实现静态页面实时调用用户登陆状态的方法
Jan 04 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
Mar 30 PHP
超强多功能php绿色集成环境详解
Jan 25 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
Feb 10 PHP
phpinfo无法显示的原因及解决办法
Feb 15 PHP
在Laravel 中实现是否关注的示例
Oct 22 PHP
使用Git实现Laravel项目的自动化部署
Nov 24 PHP
php实现微信和支付宝支付的示例代码
Aug 11 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+XML 制作简单的留言本 图文教程
2009/11/02 PHP
php+js实现异步图片上传实例分享
2014/06/02 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
thinkPHP5.0框架API优化后的友好性分析
2017/03/17 PHP
索趣科技的答案
2007/02/07 Javascript
jQuery新闻滚动插件 jquery.roller.js
2011/06/27 Javascript
js中将URL中的参数提取出来作为对象的实现代码
2011/08/16 Javascript
js 函数的副作用分析
2011/08/23 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
2013/04/07 Javascript
javascript中typeof操作符和constucor属性检测
2015/02/26 Javascript
javascript实现行拖动的方法
2015/05/27 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
Vue实现根据hash高亮选项卡
2019/05/27 Javascript
JavaScript的查询机制LHS和RHS解析
2019/08/16 Javascript
详解vue中v-bind:style效果的自定义指令
2020/01/21 Javascript
[01:17:47]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[40:31]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
Python TCP通信客户端服务端代码实例
2019/11/21 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
通过 Python 和 OpenCV 实现目标数量监控
2020/01/05 Python
python实现简单颜色识别程序
2020/02/19 Python
基于python实现数组格式参数加密计算
2020/04/21 Python
python通过cython加密代码
2020/12/11 Python
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
查找廉价航班和发现新目的地:Kiwi.com
2019/02/25 全球购物
入党积极分子思想汇报
2014/01/02 职场文书
班级德育工作实施方案
2014/02/21 职场文书
企业党建工作汇报材料
2014/08/19 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
欠条格式范本
2015/07/03 职场文书
python程序的组织结构详解
2021/12/06 Python
使用compose函数优化代码提高可读性及扩展性
2022/06/16 Javascript