好的...首先我阅读了这篇文章..
http://net.tutsplus.com/tutorials/php/6-codeigniter-hacks-for-the-masters/
在第一个 hack 中,它说如果我将这些包含在我的config.php
文件中:
function __autoload($class) {
if (file_exists(APPPATH."models/".strtolower($class).EXT)) {
include_once(APPPATH."models/".strtolower($class).EXT);
}
}
我不需要将我的模型类扩展到 CI_Model。
然后我试图$this->db->select('email')->from('users')->where('email', $email);
在我的模型类中使用..CodeIgniter 告诉我找不到“db”属性。有没有人尝试过这个黑客并知道如何让它工作?
class User {
public $id;
public $email;
public $displayName;
public $password;
public static function search_by_email($email) {
$user = new User;
$user->db->select('email')->from('users')->where('email', $email);
$query = $user->db->get();
if ($query->num_rows()==0) {
return false;
}else {
foreach ($query->result() as $key => $val) {
$user->email = $val['email'];
$user->displayName = $val['displayName'];
return $user;
}
}
return null;
}
当我在控制器中调用静态函数时,我使用:
$user = User::search_by_email("xxx@gmail.com");
如果我不扩展用户,它会显示一个 CI 警告:Message: Undefined property: User::$db
。如果我使用User extends CI_Model {}
,服务器将崩溃。
有人知道这种情况吗?
编辑:
然后我放弃了愚蠢的 Nettus 教程代码,感谢你们......但我的模型仍然无法正常工作:
class User extends CI_Model {
public $id;
public $email;
public $displayName;
public $password;
public function search_by_email($email) {
$user = new User();
$this->db->select('email')->from('users')->where('email', $email);
$query = $this->db->get();
if ($query->num_rows()==0) {
return false;
}else {
foreach ($query->result() as $key => $val) {
$user->email = $val['email'];
$user->displayName = $val['displayName'];
return $user;
}
}
return null;
}
在我的控制器中,我使用:
$this->load->model('User');
$user = $this->User->search_by_email("leo.niecn@gmail.com");
我的服务器仍然崩溃......我是否禁止像public $id
在我的模型中那样编写类变量?