おかげ..PHP PDO依存性の注入読書と私の質問を検討するための
私はPDOへとOOPに新しいです(右の方法 - 私は今、いくつかの時間のためのより多くの機能のようなオブジェクトを使用してきた)、およびI現在のユーザーログインスクリプトを変換してセッションハイジャックを防止しようとしています(同時にデータをデータベースから簡単に取得できるようにします)...とにかく...
さらに、私はログインスクリプトが必要です。このようなものが必要な場合は、すでに証明されているフレームワークを使用します。
私はこのように定義され、UserSessions
ためにこのクラスを構築しています:
class UserSession {
public $userSessionId;
public $loggedInUserId;
public $userIp;
public $userFwdIp;
public $httpUserAgent;
public $authenticated;
private $hashedPassword;
private $suppliedUserName;
private $suppliedPassword;
public function __construct ($pdoConn) {
$this->setUserSessionId();
$this->setUserIp();
$this->setUserFwdIp();
$this->setSessionExpire();
$this->setHttpUserAgent();
$this->setLoggedInUserId();
$this->updateCurrentSession();
}
private function setLoggedInUserId() {
$query = 'select 1 from dual';
$this->loggedInUserId = $pdoConn->query($query)->fetch()[0];
}
// several other methods below that all function properly
}
私はここでクラスをインスタンス化:
$databaseConnect = new $config['database_type']($config);
$pdoConn = new PDO( $databaseConnect->connectString
, $databaseConnect->getDataBaseUser()
, $databaseConnect->getDataBasePass()
, array(PDO::ATTR_EMULATE_PREPARES=>false
, pdo::ATTR_ERRMODE=>pdo::ERRMODE_EXCEPTION)
);
$httpReqUser = new UserSession($pdoConn);
しかし、私は以下のエラーを取得:メンバ関数へ コールquery()on null
これは、$pdoConn
オブジェクトがnull
(I思う)...しかし、私は理由を理解することはできません。
私はこのような局所的な使用のためのコンストラクタの外から中に渡された$pdoConn
値に新しい変数を設定しようとしている:
$this->setPdoConn($pdoConn) // and within that method it's a simple setter...
はおそらく、私はここでやるべきことを正確に何を誤解しています。
基本的に - このUserSession
クラスは、テーブルにいくつかのフィールドを更新または挿入する必要がありますが、PDOにアクセスする必要がありますが、いつでも新しいPDOを呼び出す必要はありません。すべてのクラスでそれを使用してください。 私はこれにどのようにアプローチすべきですか?
あなたは依存性注入container' 'に見たいと思うかもしれませんなど。 http://php-di.org/またはhttp://pimple.sensiolabs.org/ – Perspective
setLoggedInUserIdメソッドが本当のものかどうか疑問に思っています –
@tadman第3段落をご覧ください。 ... @あなたの常識は、そのクエリはただ1を返しますが、接続が良好な場合は1を返します。 – Jeff