簡體   English   中英

重構PHP函數代碼以提高可讀性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM