【发布时间】:2012-04-13 08:40:00
【问题描述】:
总的来说,我是 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(如上所述)时,我会收到以下信息:
我不明白我哪里出错了,如果有人能指出我正确的方向,我将不胜感激。
谢谢。
已编辑:根据要求添加了 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 已添加登录方式
标签: php oop design-patterns web