私は一般的にphpとOOPに慣れていないので、経験を積むために既存のサイトをoophpサイトに変えることにしました。これが私が現在直面している問題です。
Userから拡張しているNormaluserクラスがあります。Userクラスの中には、Usersクラスのプロパティの配列を含むオブジェクトを返すログインメソッドがあります。
class NormalUser extends User {
public function __construct($loginarray){
$email = $loginarray['email'];
$pass = $loginarray['pass'];
var_dump ( parent::login($email,$pass) );
//return parent::login($email,$pass)
}
}
var_dumpを実行すると(上記のように)、
bool(false)object(User)#8(4) {["user_id"] => string(1) "1" ["first_name"] => string(7) "Melanie" ["last_name"] => string(6) "Janson" ["user_level"] => string(1) "1"}
しかし、私のlogin.phpページのコードを呼び出した後:
$postdata = User::mysqli_array_escape($_POST);
$email = $postdata['email'];
$pass = $postdata['pass'];
$userstart = new NormalUser($postdata);
var_dump($userstart);
$userstart
新しいNormalUserオブジェクトとして呼び出すと正しい変数が返されると思いますが、var_dumpを実行すると(上記のように)、次のようになります。
object(NormalUser)#5(4) {["user_id"] => NULL ["first_name"] => NULL ["last_name"] => NULL ["user_level"] => NULL}
どこが間違っているのかわかりません。誰かが私を正しい方向に向けることができれば、私は大いに感謝します。
ありがとうございました。
編集済み:要求に応じてuser.phpログインメソッドを追加
public static function login($email, $pass) {
global $database;
$sql = "SELECT user_id, first_name, last_name, user_level FROM users WHERE (email='$email' AND pass=SHA1('$pass')) AND active IS NULL LIMIT 1";
$results = self::find_by_sql($sql);
//var_dump($results);
if (!empty($results)) {
return array_shift($results);
} else {
return false;
}
}