2016-11-23 19 views
-4

我有兩個類似的功能,通過生成的代碼進行驗證。它們僅在身體上有所不同。但他們的邏輯是相似的。如何使用OOP設計模式合併兩個相似的功能?

public function verifyEmail($code){ 
    // Validaton $code 
    // Query to DB to get code 
    // Comparing $code with code from DB 
    // return success or fail 
} 

public function verifyPhone($code){ 
    // Validaton $code 
    // Query to DB to get code 
    // Comparing $code with code from DB 
    // return success or fail 
} 

如何結合兩個相似的功能,在這種情況下?

+1

我不沒辦法。 OOP意味着你有一個模擬對象的編程對象,就像用戶一樣。你會有一個用戶,當你給它添加一個電話時,你會驗證它是一種方法或其他東西。 – Phiter

+2

圍繞它放置一個'class'。 –

+0

我不確定OOP從哪裏來到這裏。你有一個課程,你的計劃使用的對象。你總是可以通過添加驗證類型的第二個參數(電話/電子郵件)將這兩個函數組合成一個。 – Maximus2012

回答

0

取這兩個:

public function verifyEmail($code){ 
    // Validaton $code 
    // Query to DB to get code 
    // Comparing $code with code from DB 
    // return success or fail 
} 

public function verifyPhone($code){ 
    // Validaton $code 
    // Query to DB to get code 
    // Comparing $code with code from DB 
    // return success or fail 
} 

,使這一個:

public function verifyCol($code, $col){ 

    // white list the column to use in the query to the DB 
    // here is an example of a two item white list 
    $column = ($col=='Email') ? 'Email' : 'Phone'; 

    // Validaton $code 
    // Query to DB to get code 
    // but use the $column variable to select the proper column 

    // Comparing $code with code from DB 
    // return success or fail 
} 

也,你能避免做這個更新遺留代碼:

public function verifyEmail($code){ 
    return verifyCol($code, 'Email'); 
} 
public function verifyPhone($code){ 
    return verifyCol($code, 'Phone'); 
} 
0

我不知道如何使用OOP,你的優勢,我想用程序的想法是你想要的。

private function vertifyThing($type, $code) 
{ 
    // Validaton $code (based off of $type) 
    // Query to DB to get code (based off of $type) 
    // Comparing $code with code from DB (based off of $type) 
    // return success or fail 
} 

public function verifyEmail($code) 
{ 
    return vertifyThing('email', $code); 
} 

public function verifyPhone($code) 
{ 
    return vertifyThing('phone', $code); 
} 
+0

這比以前好,但我需要使用OOP。但是在'vertifyThing'中,我會被迫再次使用'if'。這是問題 – Mamamada