PHP单例模式模拟Java Bean实现方法示例

 更新时间:2018年12月07日 14:53:58   作者:mawentao5367519  
这篇文章主要介绍了PHP单例模式模拟Java Bean实现方法,涉及php面向对象程序设计相关操作技巧,需要的朋友可以参考下

本文实例讲述了PHP单例模式模拟Java Bean实现方法。分享给大家供大家参考,具体如下:

问题:

根据如下杨辉三角形

实现一个get_value($row,$col)方法:

(前一个由于代码是手机编辑的,很乱,重新发下)只是为了实现这个方法,很简单,几行代码就能实现,但如果行和列的值稍微大点,你就发现,运行时间很长。所以就这次的题做了个稍微复杂点的例子,说明下单例模式的使用、static的使用、模拟Java Bean、static的使用、递归函数案例等。

/**
 * author Winter
 * 2016-11-22
 * PHP的单例模式
 * 模拟Java Bean
 * Class Php_bean
 */
class Php_bean{
  private static $_instance = null;
  private function __construct(){}
  private $hit = 0;//命中次数
  private $array = array();//缓存
  private $itratorCount = 0;//迭代次数
  public function add_itratorCount(){
    $this->itratorCount ++;
  }
  public function get_itratorCount(){
    return $this->itratorCount;
  }
  public function set_cache($row,$col,$value){
    $this->array[$row."_".$col] = $value;
  }
  public function get_cache($row,$col){
    if(isset($this->array[$row."_".$col])){
      return $this->array[$row."_".$col];
    }else{
      return false;
    }
  }
  public function add_hit(){
    $this->hit ++;
  }
  public function get_hit(){
    return $this->hit;
  }
  public static function instance(){
    if(self::$_instance instanceof self) return self::$_instance;
    self::$_instance = new self;
    return self::$_instance;
  }
}
/**
 * @param $row 行
 * @param $col 列
 * @return int
 */
function get_value($row,$col){
  $php_bean = Php_bean::instance();
  $php_bean->add_itratorCount();
  if($col > $row) return 0;
  if($row <=0) return 0;
  if($col == $row) return 1;
  if($row == 1) return 1;
  if($col == 1) return 1;
  $pre = $php_bean->get_cache($row-1,$col-1);
  $next = $php_bean->get_cache($row-1,$col-0);
  if($pre === false){
    $pre = get_value($row-1,$col-1);
    $php_bean->set_cache($row-1,$col-1,$pre);
  }else{
    $php_bean->add_hit();
  }
  if($next === false){
    $next = get_value($row-1,$col-0);
    $php_bean->set_cache($row-1,$col-0,$next);
  }else{
    $php_bean->add_hit();
  }
  $value = $pre + $next;
  return $value;
}
$v = get_value(6,6);
var_dump($v);
$php_bean_obj = Php_bean::instance();
echo "hit:".$php_bean_obj->get_hit()."<br/>";
echo "itratorCount:".$php_bean_obj->get_itratorCount()."<br/>";

运行结果:

int(1) hit:0
itratorCount:1

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • 将时间以距今多久的形式表示,PHP,js双版本

    将时间以距今多久的形式表示,PHP,js双版本

    依然从项目需求出发,些了这个函数,PHP版本写了一个Smarty的插件,只要简单的修改下函数名就能直接在PHP中调用了,同时,为了AJAX翻页时所获取JSON数据中的时间以同样的方式显示,因此又写了一个JS的版本
    2012-09-09
  • php获取文件类型和文件信息的方法

    php获取文件类型和文件信息的方法

    这篇文章主要介绍了php获取文件类型和文件信息的方法,可实现获取文件类型、大小、修改时间等功能,非常简单实用,需要的朋友可以参考下
    2015-07-07
  • PHP实现二维数组中的查找算法小结

    PHP实现二维数组中的查找算法小结

    这篇文章主要介绍了PHP实现二维数组中的查找算法,涉及PHP数组遍历、判断、计算等相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • 浅谈PHP中output_buffering

    浅谈PHP中output_buffering

    这篇文章主要介绍了浅谈PHP中output_buffering的相关资料,需要的朋友可以参考下
    2015-07-07
  • PHP程序员不应该忽略的3点

    PHP程序员不应该忽略的3点

    这篇文章主要介绍了PHP程序员不应该忽略的3点,变量、数组的应用技巧;正则表达式;模板,需要的朋友可以参考下
    2015-10-10
  • PHP中如何调用webservice的实例参考

    PHP中如何调用webservice的实例参考

    本篇文章介绍了,PHP中如何调用webservice的实例参考。需要的朋友参考下
    2013-04-04
  • php实现读取手机客户端浏览器的类

    php实现读取手机客户端浏览器的类

    这篇文章主要介绍了php实现读取手机客户端浏览器的类,可实现取手机号码,浏览器报头信息,取得手机类型,取得手机IP等功能,需要的朋友可以参考下
    2015-01-01
  • php简单实现多字节字符串翻转的方法

    php简单实现多字节字符串翻转的方法

    这篇文章主要介绍了php简单实现多字节字符串翻转的方法,涉及php操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • php基于openssl的rsa加密解密示例

    php基于openssl的rsa加密解密示例

    这篇文章主要介绍了php基于openssl的rsa加密解密方法,结合实例形式分析了rsa加密解密的原理与具体实现技巧,代码注释中给出了相关的具体说明,需要的朋友可以参考下
    2016-07-07
  • 解析strtr函数的效率问题

    解析strtr函数的效率问题

    本篇文章是对strtr函数的效率问题进行了详细的分析介绍,需要的朋友参考下
    2013-06-06

最新评论