文章主要介紹了PHP單例模式模擬Java Bean實現方法,涉及php面向對象程序設計相關操作技巧,需要的朋友可以參考下。

  實例講述了PHP單例模式模擬Java Bean實現方法,具體如下:

  問題:

  根據如下楊輝三角形

  實現一個get_value($row,$col)方法:

  (前一個由于代碼是手機編輯的,很亂,重新發下)只是為了實現這個方法,很簡單,幾行代碼就能實現,但如果行和列的值稍微大點,你就發現,運行時間很長。所以就這次的題做了個稍微復雜點的例子,說明下單例模式的使用、static的使用、模擬Java Bean、static的使用、遞歸函數案例等。?

  1. /**
  2. * author Winter
  3. * 2016-11-22
  4. * PHP的單例模式
  5. * 模擬Java Bean
  6. * Class Php_bean
  7. */
  8. class Php_bean{
  9. private static $_instance = null;
  10. private function __construct(){}
  11. private $hit = 0;//命中次數
  12. private $array = array();//緩存
  13. private $itratorCount = 0;//迭代次數
  14. public function add_itratorCount(){
  15. $this->itratorCount ++;
  16. }
  17. public function get_itratorCount(){
  18. return $this->itratorCount;
  19. }
  20. public function set_cache($row,$col,$value){
  21. $this->array[$row."_".$col] = $value;
  22. }
  23. public function get_cache($row,$col){
  24. if(isset($this->array[$row."_".$col])){
  25. return $this->array[$row."_".$col];
  26. }else{
  27. return false;
  28. }
  29. }
  30. public function add_hit(){
  31. $this->hit ++;
  32. }
  33. public function get_hit(){
  34. return $this->hit;
  35. }
  36. public static function instance(){
  37. if(self::$_instance instanceof self) return self::$_instance;
  38. self::$_instance = new self;
  39. return self::$_instance;
  40. }
  41. }
  42. /**
  43. * @param $row 行
  44. * @param $col 列
  45. * @return int
  46. */
  47. function get_value($row,$col){
  48. $php_bean = Php_bean::instance();
  49. $php_bean->add_itratorCount();
  50. if($col > $row) return 0;
  51. if($row <=0) return 0;
  52. if($col == $row) return 1;
  53. if($row == 1) return 1;
  54. if($col == 1) return 1;
  55. $pre = $php_bean->get_cache($row-1,$col-1);
  56. $next = $php_bean->get_cache($row-1,$col-0);
  57. if($pre === false){
  58. $pre = get_value($row-1,$col-1);
  59. $php_bean->set_cache($row-1,$col-1,$pre);
  60. }else{
  61. $php_bean->add_hit();
  62. }
  63. if($next === false){
  64. $next = get_value($row-1,$col-0);
  65. $php_bean->set_cache($row-1,$col-0,$next);
  66. }else{
  67. $php_bean->add_hit();
  68. }
  69. $value = $pre + $next;
  70. return $value;
  71. }
  72. $v = get_value(6,6);
  73. var_dump($v);
  74. $php_bean_obj = Php_bean::instance();
  75. echo "hit:".$php_bean_obj->get_hit()."<br/>";
  76. echo "itratorCount:".$php_bean_obj->get_itratorCount()."<br/>";

  運行結果:

int(1) hit:0

itratorCount:1

  希望PHP單例模式模擬Java Bean實現方法示例詳解所述對大家PHP程序設計有所幫助。