これが私の脳を傷つけているものです。まず、約 5 分で説明できる程度の php を知っています。しかし、私はオブジェクト指向プログラミングにかなり精通しています。状況:
イントラネットのみのツールとして使用する PHP アプリケーションを構築しようとしています。私の考えは、現在のユーザーをセッションに保存することです。データベース ユーザー テーブルの PHP モデルを作成しました。コードでは、ユーザーを認証しています。ユーザーが認証された場合は、User オブジェクトを作成してセッションに保存しています。問題は、User オブジェクトが作成されているが、すべてのプロパティが null であることです。私はいくつかの答えについてこことphpネットで調査し、いくつかのことを試しましたが、問題は解決しません。私はそれがphpに関連しているとは思わない.私はそれが間違っていると絶対に思っている. ログイン スクリプトの関連するコード サンプルを次に示します。ここに到達するには、パスワードを検証する必要があり、変数$users
データベースコントローラーの関数からの直接の戻り値です。変数はコードに含まれているため、var_dump
その変数を返す必要がない場合があります。関連する配列要素をコンストラクターに個別に渡そうとしました。完全な配列を渡そうserialize
としunserialize
ました。を使用して設定しようとしました$this->property = $someValue
。
if ($hash) {
$current_user = new User($users);
$_SESSION['current_user'] = serialize($current_user);
$current_user = unserialize($_SESSION['current_user']);
var_dump(session_id());
var_dump($users);
var_dump($current_user);
var_dump($_SESSION['current_user']);
}
ここに私のコンストラクタがあります:
class User {
public $userid;
public $fname;
public $lname;
public $email;
public $username;
public $function;
public $d_joined;
public $is_internal;
public $is_active;
function __costruct() {
$arguments = func_get_args();
if (!empty($arguments)) {
foreach ($arguments[0] as $key => $property) {
if ($property_exists($this, $key)) {
$this -> {$key} = $property;
}
}
}
}
私は試してみましたが、何もしませんでした。これが呼び出しの出力です_construct($args)
_construct(array($args))
var_dump()
string 'cgotecrpu7soqvepoimjo2s116' (length=26)
array (size=1)
0 =>
array (size=20)
'userid' => string '1' (length=1)
0 => string '1' (length=1)
'fname' => string 'First Name' (length=4)
1 => string 'First Name' (length=4)
'lname' => string 'Last Name' (length=8)
2 => string 'Last Name' (length=8)
'email' => string 'email address' (length=21)
3 => string 'email address' (length=21)
'username' => string 'username' (length=9)
4 => string 'username' (length=9)
'password' => string 'hashed password:salt' (length=65)
5 => string 'hashed password:salt' (length=65)
'function' => string '4' (length=1)
6 => string '4' (length=1)
'd_joined' => string '2013-01-14' (length=10)
7 => string '2013-01-14' (length=10)
'is_internal' => string '1' (length=1)
8 => string '1' (length=1)
'is_active' => string '1' (length=1)
9 => string '1' (length=1)
object(User)[2]
public 'userid' => null
public 'fname' => null
public 'lname' => null
public 'email' => null
public 'username' => null
public 'function' => null
public 'd_joined' => null
public 'is_internal' => null
public 'is_active' => null
string 'O:4:"User":9{
s:6:"userid";N;
s:5:"fname";N;
s:5:"lname";N;
s:5:"email";N;
s:8:"username";N;
s:8:"function";N;
s:8:"d_joined";N;
s:11:"is_internal";N;
s:9:"is_active";N;}' (length=162)
私が見る限り、最初の配列$users
には正しいデータがあります。User
オブジェクトは変数に作成されます$current_user
。ただし、オブジェクト プロパティにアクセスしようとすると、オブジェクト以外からのオブジェクト プロパティへのアクセスに関するエラーが発生します。セッション変数はオブジェクトではないように見えますが、$current_user
null プロパティがあってもオブジェクトです。誰かが私を正しい方向に向けることができますか? ありがとう。