回答
我對抗可變全局變量。如果你要處理更多的這樣的問題,考慮登記處(見this one)
function db() {
static $db = null;
if (null === $db)
$db = new PDO(...);
return $db;
}
:你可以使用一個簡單的工廠方法返回的連接。
關於可變全局:
我反對這樣的事情,因爲,他們很容易突變。
如果在程序流程中,情況意外改變,會發生什麼情況?
事情打破。
如果你是唯一一個在這個項目上工作的人,全局變量可能沒問題。
但是根據我的經驗,即使在這種情況下,跟蹤全局變量也會變得麻煩並且冒犯您的代碼的邏輯組織。
如果您想與其他將覆蓋此類全局的其他人分享您的代碼,該怎麼辦?
此外,全局矛盾在seperation of concerns背景下data encapsulation的方法。
所有這些都是軟件架構的大科學。
此外,在此特定情況下使用工廠可確保您只保留對數據庫連接的單一引用。
不錯的參考。你能解釋爲什麼你反對可變全局變量? :) –
@ Wolfpack'08增加了我在上述全局上的位置。 – glasz
$ sth = $ this-> db-> prepare($ sql); $ sth-> execute(); $ silos = $ sth-> fetchAll(); $ sth = null; 我的PDO對象會被'$ sth = null;'關閉嗎? –
看看這個項目:Slim-PDO(github上)
文檔is here
通過作曲家安裝:
$ composer require slim/pdo
簡單的用法:
$app->container->singleton('database', function() use ($app) {
return new \Slim\PDO\Database($app->config('db.dsn'), $app->config('db.usr'), $app->config('db.pwd'));
});
// SELECT * FROM users WHERE id = ?
$selectStatement = $app->database->select()
->from('users')
->where('id', '=', 1234);
$stmt = $selectStatement->execute();
$data = $stmt->fetch();
// INSERT INTO users (id , usr , pwd) VALUES (? , ? , ?)
$insertStatement = $app->database->insert(array('id', 'usr', 'pwd'))
->into('users')
->values(array(1234, 'your_username', 'your_password'));
$insertId = $insertStatement->execute(false);
- 1. 如何在瘦身框架中處理POST請求?
- 2. 使用angularjs(例如404)發佈瘦身框架?
- 3. 瘦身框架 - post方法如何工作?
- 4. 如何從瘦身框架只獲得http類?
- 5. 瘦身框架 - 如何自動加載Slim/Slim.php而不是使用require?
- 6. 有人可以幫我在瘦身框架中使用POST方法嗎?
- 7. 如何在瘦身框架中將控制器重定向到枝視圖?
- 8. 瘦身框架無法正常工作的身份驗證
- 9. 使用CodeIgniter框架的PDO
- 10. 在瘦框架中讀取JSON輸入
- 11. 在PHP中我可以使用瘦框架嗎?
- 12. 如何在emacs中使用瘦身代碼
- 13. 架構切片/瘦身工具
- 14. iOS:爲REST web服務POST請求尋找瘦身框架
- 15. 瘦身的XML
- 16. 如何使用twitter框架在iOS 5.0中使用bitly框架?
- 17. PDO不laravel框架
- 18. 使用pid的Rails瘦身服務
- 19. PHP:瘦框架異常處理
- 20. MVC如何保持模型瘦身
- 21. 在PPI框架中使用Doctine DBAL的PDO常規錯誤
- 22. 如何使UINavigationBar「瘦」?
- 23. 如何使用超薄會話中間件在瘦客戶機框架中登錄和註銷用戶?
- 24. 如何在cakephp中使用框架?
- 25. 如何在Spring框架中使用ORM ...?
- 26. 如何在windows phone中使用框架?
- 27. 如何在npm中使用css框架
- 28. 如何在框架中使用jquery
- 29. 如何在Unity中使用iOS框架?
- 30. 如何在框架中使用PHP CURL?
通常,這就是我所做的。雖然它不是正確的做法,但就OOP而言,這很容易。當然,您需要非常小心地將代碼與其他可能使用相同變量名稱的庫混合使用。請參閱glasz答案,瞭解如何正確執行此操作。 – Brad