2016-08-25 9 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; 
} 

[OK]をので、私はのgetUser()関数を持っているし、その後$これを割り当てる - > _ユーザー= $行ので、私は、データベースからユーザー情報を取得することができます。今私はこれからいくつかのことを達成したいが、それについてどうやって行くのかは分からない。

$ 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; 
    } 
    } 
} 

は、すべての値を返すために、単一のユーザーの列の要素とget()を返すようにgetField(FIELD)メソッドを使用します。

$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)とUserModelクラスを使用するユーザ機能を処理する別の(即ちclass UserAuth)のクラスを作成することもお勧めです。これにより、基礎となる認証ソースをより簡単に交換することができます。

+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; 
} 
} 
関連する問題