我是一般的PHP和OOP的新手,所以决定把我现有的网站放在一个php的oo中以获得一些经验。 这是我目前面临的问题。对象没有按照预期启动PHP OOP
我有一个从用户扩展的类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;
}
}
'parent :: login'的返回值不是'NormalUser'对象本身 - 你能显示User :: login'方法的实现吗? – DCoder 2012-04-13 08:46:17
@dcoder增加了登录方法 – Nik 2012-04-13 08:48:42