[英]Refactoring PHP function Code for Better Readability
我有這個Class函數fr更新會話ID:
/**
* update session id in database
*
* @access public
* @static static method
* @param string $userId
* @param string $sessionId
*/
public static function updateSessionId($userId, $sessionId = null)
{
$database = DatabaseFactory::getFactory()->getConnection();
$sql = "UPDATE users SET session_id = :session_id WHERE user_id = :user_id";
$query = $database->prepare($sql);
$query->execute(array(':session_id' => $sessionId, ":user_id" => $userId));
}
現在,我需要使用名稱客戶更新另一個數據庫表。 我有兩種選擇:
像這樣向該函數添加新的Arguments check
:
public static function updateSessionId($userId,$check, $sessionId = null)
if($check == 'users'){
$sql = "UPDATE users SET session_id = :session_id WHERE user_id = :user_id";
..................
} else {
$sql = "UPDATE customers SET session_id = :session_id WHERE customer_id = :user_id";
........................
}
或為客戶創建/添加新功能,如下所示:
public static function updateCustomerSessionId($userId, $sessionId = null)
{.......}
性能代碼的最佳方法是什么?
這是我會做的
protected static $allowedTables = array('users', 'customers');
public static function updateSessionId($table, $userId, $sessionId = null)
{
if (in_array($table, MySessionHandler::$allowedTables)) {
$database = DatabaseFactory::getFactory()->getConnection();
$sql = "UPDATE {$table} SET session_id = :session_id WHERE user_id = :user_id";
$query = $database->prepare($sql);
$query->execute(array(':session_id' => $sessionId, ":user_id" => $userId));
}
}
我在這里看到的主要好處是,您可以輕松添加或刪除表名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.