一般来说,我是 php 和 OOP 的新手,因此决定将我现有的网站变成 oo php 网站以获得一些经验。这是我目前面临的问题。
我有一个从 User 扩展而来的 Normaluser 类。User 类内部是一个 login 方法,它返回一个包含 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) 对象(用户)#8 (4) { ["user_id"]=> string(1) "1" ["first_name"]=> string(7) "Melanie" ["last_name"]=> string(6) "Janson" ["user_level"]=>字符串(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 (如上文所述)时,我收到以下内容:
对象(普通用户)#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;
}
}