單例設計模式
今天在網路上看到的一個名詞
說穿了它就是例用static這個關鍵字
其實static早就php4就已經存在了
但很少看到討論它的功能
再順便討論一下吧
```php
function test()
{
static $a;
if ($a == FALSE)
{
$a = 1;
}
else
{
$a++;
}
echo $a;
}
test(); //輸出 1
test(); //輸出 2
test(); //輸出 3
test(); //輸出 4
/*
所以當你指定了變數為static時
它就不會因為function執行結束後而將變數回收
所以我們這個例用這個方法來實現單例設計模式
*/
class Test
{
function instance()
{
static $instance;
if ($instance == FALSE)
{
$instance = new Test();
}
return $instance;
}
}
$test =& Test::instance();
$test2 =& Test::instance();
$test3 =& Test::instance();
/*
這樣$test,$test2,$test3都會指向同一個物件
以上為PHP4的寫法
PHP4必須帶參考才能將物件指到同一下
那php5怎麼寫呢?
*/
class Test
{
static private $instance;
static public function instance()
{
if (self::$instance == FALSE)
{
self::$instance = new self;
}
return self::$instance;
}
}
$test = Test::instance();
/*
PHP5的CLASS支援這種寫法當然要用這種寫法了啊!
雖然採用PHP4的寫法也行....
但新的東西總是要用一下的是不是
*/
```
2011年8月12日 星期五
2011年8月10日 星期三
FB.api究竟要如何使用?
在使用FB的javascript寫應用程式不外乎最常用到的就是FB.api 但查到的文件不外乎都只是用來做資訊查詢... ex.
```javascript
FB.api({
method:'fql.query',
query:'SELECT uid,first_name,last_name FROM user WHERE is_app_user = 1 AND (uid IN (SELECT uid2 FROM friend WHERE uid1 = me())) '
},function(){
console.info(arguments);
});
// 或者是用Graph API來做資訊查詢 ex.
FB.api(object_id+"/likes",function(){
console.info(arguments);
});
// 但事實上FB.api真正的功能並不只如此 ex.
//讚
FB.api(object_id+"/likes","post",function(){
console.info(arguments);
});
//取消讚
FB.api(object_id+"/likes","delete");
//publish feed 至 https://graph.facebook.com/arjun/feed
FB.api("arjun/feed",{message:'hello'},"post",function(){
console.info(arguments);
});
```
帶入參數的個數和型態FB.api會自動去判断 善用這些東西很多事情就不用都透過php sdk來執行可以大量減少Server的負擔喔
訂閱:
文章 (Atom)