文章主要介紹了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單例模式模擬Java Bean實現方法示例詳解所述對大家PHP程式設計有所幫助。