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 相关文章推荐
Smarty模板快速入门
Jan 04 PHP
PHP令牌 Token改进版
Jul 18 PHP
php 随机记录mysql rand()造成CPU 100%的解决办法
May 18 PHP
php图片缩放实现方法
Feb 20 PHP
PHP获取网页标题的3种实现方法代码实例
Apr 11 PHP
php中ob_get_length缓冲与获取缓冲长度实例
Nov 20 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
Apr 08 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
May 27 PHP
PHP实现加强版加密解密类实例
Jul 29 PHP
Yii2选项卡的简单使用
May 26 PHP
可兼容php5与php7的cURL文件上传功能实例分析
May 11 PHP
Thinkphp5.0 框架Model模型简单用法分析
Oct 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
简单的过滤字符串中的HTML标记
2006/12/25 PHP
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
2013/04/26 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
jQuery ctrl+Enter shift+Enter实现代码
2010/02/07 Javascript
js两行代码按指定格式输出日期时间
2011/10/21 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
javascript性能优化之DOM交互操作实例分析
2015/12/12 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
Node.js检测端口(port)是否被占用的简单示例
2016/09/29 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
swiper Scrollbar滚动条组件详解
2019/09/08 Javascript
Vue项目利用axios请求接口下载excel
2020/11/17 Vue.js
JS中循环遍历数组的四种方式总结
2021/01/23 Javascript
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
Python比较两个图片相似度的方法
2015/03/13 Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
2015/05/11 Python
Python实现控制台输入密码的方法
2015/05/29 Python
Ubuntu安装Jupyter Notebook教程
2017/10/18 Python
Python面向对象class类属性及子类用法分析
2018/02/02 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
检测浏览器对HTML5和CSS3支持度的方法
2015/06/25 HTML / CSS
Canvas系列之滤镜效果
2019/02/12 HTML / CSS
Shopee越南:东南亚与台湾电商平台
2019/02/03 全球购物
教师实习的自我鉴定
2013/10/26 职场文书
大学生创业计划书的用途
2014/01/08 职场文书
会计大学生职业生涯规划书范文
2014/01/13 职场文书
设计顾问服务计划书
2014/05/04 职场文书
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
个人存款证明书
2014/10/18 职场文书
第二批党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
小学母亲节活动总结
2015/02/10 职场文书
党员反邪教心得体会
2016/01/15 职场文书
如何将numpy二维数组中的np.nan值替换为指定的值
2021/05/14 Python
python中使用 unittest.TestCase单元测试的用例详解
2021/08/30 Python