PHP 如何在CodeIgniter中编写更好的模型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 如何在CodeIgniter中编写更好的模型相关的知识,希望对你有一定的参考价值。

<?php if (!defined('BASEPATH')) exit('No direct script access');

class Users_model extends Model {
	var $table = 'users';
	
	function __construct() {
		parent::Model();
	}
	
	function Users_model() {
		parent::Model();
	}
	
	function add_user($options = array()) {
		if(!$this->_required(array('email', 'password'), $options))
			return false;
			
		$options = $this->_default(array('status' => 'active'), $options);
		
		$qualificationArray = array('email', 'username', 'status');
		foreach($qualificationArray as $qualifier) {
			if (isset($options[$qualifier]))
				$this->db->set($qualifier, $options[$qualifier]);
		}
		
		if (isset($options['password']))
			$this->db->set('password', md5($options['password']));
			
		$this->db->insert($this->table);
		
		return $this->db->insert_id();
	}
	
	function update_user($options = array()) {
		if(!$this->_required(array('email'), $options))
			return false;
			
		$qualificationArray = array('email', 'username', 'status');
		foreach($qualificationArray as $qualifier) {
			if (isset($options[$qualifier]))
				$this->db->set($qualifier, $options[$qualifier]);
		}
		
		$this->db->where('email', $options['email']);
		
		if(isset($options['password']))
			$this->db->set('password', md5($options['password']));
			
		$this->db->update($this->table);
		
		return $this->db->affected_rows();
	}
	
	function get_users($options = array()) {
		$options = $this->_default(array('sort_direction' => 'asc'), $options);
		
		$qualificationArray = array('email', 'status');
		foreach($qualificationArray as $qualifier) {
			if (isset($options[$qualifier]))
				$this->db->where($qualifier, $options[$qualifier]);
		}
		
		if (isset($options['limit']) && isset($options['offset']))
			$this->db->limit($options['limit'], $options['offset']);
			
		else if (isset($options['limit']))
			$this->db->limit($options['limit']);
			
		if (isset($options['sort_by']))
			$this->db->order_by($options['sort_by'], $options['sort_direction']);
			
		$query = $this->db->get($this->table);
		if ($query->num_rows() == 0)
			return false;
			
		if (isset($options['email'])) {
			return $query->row(0);
			
		} else {
			return $query->result();
		}
	}
	
	function delete_user($options = array()) {
		if(!$this->_required(array('email'), $options))
			return false;
			
		$this->db->where('email', $options['email']);
		$this->db->delete($this->table);
	}
	
	function _required($required, $data) {
		foreach($required as $field)
			if (!isset($data[$field]))
				return false;
		return true;
	}
	
	function _default($defaults, $options) {
		return array_merge($defaults, $options);
	}
}

以上是关于PHP 如何在CodeIgniter中编写更好的模型的主要内容,如果未能解决你的问题,请参考以下文章

PHP 框架哪个更好一点?CodeIgniter 怎么样

PHP 框架哪个更好一点?CodeIgniter 怎么样?

可以在 CodeIgniter 视图中将 Javascript 或 jQuery 代码编写为 PHP 文件吗?

没有 jquery ui 的 php 和 codeigniter 自动完成是不是有更好的(轻量级)解决方案?

codeigniter 中的安全性

CodeIgniter / PHP:如何在 .php 视图页面中获取 URI