2016-12-03 13 views
0

私はユーザデータを取得し、そのデータをページに表示するページを持っています。私のコードは正常に動作しますが、OOPをいつWeb開発に使用するのかを理解できません。私の現在のページは非常に簡単で、OOPはオブジェクトを作成するために多くの処理能力を必要とすることを理解しています。このような単純なページにOOPを使用する必要がありますか?PHPでOOPを使用してクエリからデータを取得する

<?php 
    session_start(); 
    require $_SERVER['DOCUMENT_ROOT'] . "/connection.php"; 
    if ($_SESSION["id"] != ""){ 
     $result = $db->query(" 
      SELECT `Username`, `Image`, `FirstName`, `LastName`, `Type` 
      FROM Users WHERE `id` = '{$_SESSION['id']}' 
     "); 
     if ($result->num_rows == 0){ 
      $switch = false; 
     } else { 
      $resultSet = $result->fetch_array(); 
      $avatar = $resultSet["Image"]; 
      $account_type = $resultSet["Type"]; 
      $username = $resultSet["Username"]; 
      $fName = $resultSet["FirstName"]; 
      $lName = $resultSet["LastName"]; 
      $id = $_SESSION["id"]; 
      $switch = true; 
     } 
    } 
?> 

その後、情報がHTMLに表示されます。たとえば、名前を表示したいときは、ちょうどそれをエコーアウトします。同様にecho "<p>$fName</p>";のように、このアプローチをオブジェクト指向のアプローチに変更する必要はありませんか?それとも私のデザインは適していますか?

答えて

1

あなたのコードが大きくなるとOOPがもっと望ましいと言えるかもしれませんが、OOPで始めることは常にスケーラビリティと理解しやすいコードのための良いオプションです。

あなたが持っているものは、基本的にその中に関数を持つファイルです。ユーザーに関連する他のものを取得したい場合は、おそらく同様のものを呼び出す別の関数を持つ別のファイルを作成します。あなたが持っている可能性があり、このようなものです:

class User { 
    private $id; 
    private $username; 
    private $firstName; 
    private $lastName; 
    private $type; 
    private $image; 

    function __construct($id) { 
     // TODO SQL stuff 

     $this->id = $id; 
     $this->username = // blahblah 
    } 
} 

そして、それは(クラスのメソッドとして知られている)の機能のすべての種類を持つことができ、そしてそれは、すべての個別のUserクラスに隠れてすることがあります。あなたや他の人がプロジェクトに少しのコードを書いているとき、彼らはUserの内部コードを知る必要はなく、Yが入れられるときにあなたのメソッドがXを返すことを知る必要があります。ちょうどこと:

$user = new User($id); 
return $user->doSomeMethod(); 

後で上のユーザのフルネームを取得したい場合は、同じSQLものを行う別のファイルを作成する必要はありません、あなたは自分のユーザーの内側にこれを追加したいですクラス(およびそれにいくつかのコメントを追加):

/** 
* Returns the proper case of the user's first and last names 
* @return String - full name of user 
*/ 
public function getFullName() { 
    return ucwords($this->firstName . " " . $this->lastName); 
} 

その後、あなたは自分のコードの残りの部分に自分のユーザーオブジェクトのgetFullName()を呼び出すことができます。あなたは、同じ分野(ユーザ)が異なる分野に広がっていることに関連するコードを少しも持ちたくないので、それを扱うのが難しくなります。

処理能力についてはあまりよく分かりませんが、コードをDRY(自分自身を繰り返さないでください)と理解しやすくするためには、OOPを使用することをお勧めします。

+0

ええと、究極的には、Web開発でOOPを使用するときには、読みやすく、管理しやすくなります。私の現在のプロジェクトでは、このPHPファイルを他のすべてのWebファイルに含めています。 PHP変数はファイル全体で使用できるので、必要なときに呼び出すだけです。例えば、画像を表示したい場合は、 'echo" Bytes

+0

ユーザデータの操作と表示に関連する関数私のサイトのすべてのページにこのクラスファイルは、余分なコードが追加されたためにパフォーマンスが低下しませんでしたか?特定のページにユーザーの名前のみを表示し、そのクラスファイルを追加したいとします。ユーザーの名前だけを取得したい場合は、クラスファイルをオーバーヘッドにしませんか? – Bytes

+0

OOPはすべてのソリューションではなく、いくつかの点では、同じ機能を5つも書いていないのと同じように、パフォーマンスを犠牲にするでしょう内部のロジック。 – Maytch

1

おそらく人の好みですが、変数を複製するためのリソースは使用しません。

私は応答$ resultSetを使用します。データベース内の列の名前に応じて、

foreach ($resultSet AS $k => $v { 
    ${$k} = $v; 
} 

:連想配列を使用して、ループを使用し、おそらくその後、変数を使用することが不可欠だった場合

echo $resultSet["LastName"]; 

:私は希望の変数を使用するには変数名になります。

関連する問題