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&amp;mysql(四)
Oct 09 PHP
PHP 中执行排序与 MySQL 中排序
Apr 21 PHP
PHP 页面跳转到另一个页面的多种方法方法总结
Jul 07 PHP
ThinkPHP的Widget扩展实例
Jun 19 PHP
PHP语法自动检查的Vim插件
Aug 11 PHP
5款适合PHP使用的HTML编辑器推荐
Jul 03 PHP
yii2中添加验证码的实现方法
Jan 09 PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
Sep 01 PHP
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
Apr 21 PHP
使用PHP访问RabbitMQ消息队列的方法示例
Jun 06 PHP
PHP hebrev()函数用法讲解
Feb 21 PHP
php实现JWT验证的实例教程
Nov 26 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与Java进行通信的实现方法
2013/10/21 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
javascript使用eval或者new Function进行语法检查
2010/10/16 Javascript
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
Jquery弹出窗口插件 LeanModal的使用方法
2012/03/10 Javascript
jQuery列表拖动排列具体实现
2013/11/04 Javascript
js操作iframe父子窗体示例
2014/05/22 Javascript
理解javascript回调函数
2014/12/28 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
2017/04/01 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
jQuery插件开发发送短信倒计时功能代码
2017/05/09 jQuery
Angular2+如何去除url中的#号详解
2017/12/20 Javascript
微信小程序 网络通信实现详解
2019/07/23 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
2020/04/24 Javascript
Vue 列表页带参数进详情页的操作(router-link)
2020/11/13 Javascript
Python实现多并发访问网站功能示例
2017/06/19 Python
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
Python微信公众号开发平台
2018/01/25 Python
python 获取当天每个准点时间戳的实例
2018/05/22 Python
Python中修改字符串的四种方法
2018/11/02 Python
树莓派用python中的OpenCV输出USB摄像头画面
2019/06/22 Python
python matplotlib 画dataframe的时间序列图实例
2019/11/20 Python
jupyter notebook 实现matplotlib图动态刷新
2020/04/22 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
python 怎样进行内存管理
2020/11/10 Python
使用html2canvas将页面转成图并使用用canvas2image下载
2019/04/04 HTML / CSS
职务聘任书范文
2014/03/29 职场文书
一般党员对照检查材料
2014/09/24 职场文书
2014年消防工作总结
2014/11/21 职场文书
2015元旦主持词开场白和结束语
2014/12/14 职场文书
2015年外贸业务员工作总结范文
2015/05/23 职场文书
爱国教育主题班会
2015/08/14 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
《三国志》赏析
2019/08/27 职场文书
python中if和elif的区别介绍
2021/11/07 Python