2016-08-25 78 views
1

我想知道是否有人可以幫助我。我是PHP OOP的新手,並希望使用對象的一些指導。PHP使用對象檢索DB數據

我正在創建一個登錄腳本,我在下面提到的功能都來自類文件。

Class USER{ 

public function userLogin($username,$password) 
{ 
    $statusY = "Y"; 

    $stmt = $this->connection->prepare("SELECT * FROM tbl_users WHERE user_name=:userName LIMIT 1"); 
    $stmt ->execute(array(":userName"=>$username)); 
    $row = $stmt ->fetch(PDO::FETCH_ASSOC); 

     if($stmt->rowCount() == 1) 
     { 

     $this->_user = $row; // Assign user details 

     $_SESSION['userSession'] = $row['user_id']; 

     } 
} 


public function getUser() 
{ 
    return $this->_user; 
} 

好了,所以我有的getUser()函數,然後分配$這 - > _ USER = $行,所以我可以從數據庫中檢索用戶信息。現在我想從這件事中獲得一些東西,但不知道如何去做。

我該如何去調用同一個類中另一個函數中的$ row ['user_id']?

所以基本上

public function test() 
{ 
$user_id = $this->_user(user_id); 
$username = $this->_user(username); 
} 

我怎麼會做這種正確的?

此外,如果我想調用頁面中的信息,如用戶主頁。

$user_home = new USER(); 
$userID = $user_home->getUser(user_id); 

echo $userID; 

如果任何人都可以給我一些指導,我可以如何前進,我將不勝感激。由於

+0

只需聲明_user作爲類變量,例如:public $ _user; –

回答

1

讓我們開始與有關方法和類的命名一個基本的聲明:我不會重複類的話題了一遍又一遍(在上述情況下,‘用戶’),而不是僅僅從方法中刪除名稱:

class User 
{ 
    private $info= array(); 
    private $authenticated= FALSE; 

    public function login ($username, $password) 
    { 
    // do your stuff 
    ... 
    // set in case that user name and password have been found 
    $this->info= $row; 
    $this->authenticated= TRUE; 
    } 

    public function isAuthenticated() 
    { 
    return $this->authenticated; 
    } 

    /** 
    * returns all info from a given user 
    */ 
    public function get() 
    { 
    return $this->info; 
    } 

    /** 
    * returns a single field 
    */ 
    public function getField ($fieldName) { 
    if (isset($this->info[$fieldName]) { 
     return $this->info[$fieldName]; 
    } else { 
     return FALSE; 
    } 
    } 
} 

使用getField(FIELD)方法只返回用戶的行和get()的一個元素返回所有值。

$user= new User(); 
$user->login ($username, $password); 
if ($user->isAuthenticated()) { 
    $home= $user->getField('home'); 
    print sprintf('%s\'s home is %s', $username, $home); 
} 

這也是可取的創建一個類用於用戶數據庫表(即class UserModel),另一種處理用戶的功能(即class UserAuth),其使用所述UserModel類。這使得交換底層認證來源變得更加簡單。

+0

非常感謝你的榜樣,你已經爲我準備好了。再次感謝 – James

0
Class USER 
{ 
    public $_user; 

    public function userLogin($username,$password) 
    { 
     $statusY = "Y"; 

    $stmt = $this->connection->prepare("SELECT * FROM tbl_users WHERE user_name=:userName LIMIT 1"); 
$stmt ->execute(array(":userName"=>$username)); 
$row = $stmt ->fetch(PDO::FETCH_ASSOC); 

    if($stmt->rowCount() == 1) 
    { 

    $this->_user = $row; // Assign user details 

    $_SESSION['userSession'] = $row['user_id']; 

    } 
} 


public function getUser() 
{ 
return $this->_user; 
} 
}