私はphpとOOPには一般的なので、私はいくつかの経験を得るためにoo phpで私の既存のサイトを有効にすることを決めました。 ここに私が現在直面している問題があります。オブジェクトが意図したとおりに起動していないOOP
私は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を(上記のように)私は私のlogin.phpページ内のコードを呼び出した後
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" }
しかし
を得ること:$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 }
どこが間違っているのかわかりません。誰かが正しい方向に向けることができれば、私は非常に感謝しています。
ありがとうございます。
EDITED:添加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;
}
}
'parent :: login'の戻り値は' NormalUser'オブジェクトではありません。 'User :: login'メソッドの実装を表示できますか? – DCoder
@dcoderはあなたがログインしていたログイン方法 – Nik