Home  >  Article  >  php教程  >  The model class for database operations uses the __call method

The model class for database operations uses the __call method

WBOY
WBOYOriginal
2016-08-22 10:13:311358browse
Jump to [1] [2] [Full screen preview]
<?
	/*
		作者 : shyhero
		邮箱 : shyhero@outlook.com
		Q  Q : 1757424878
	 */
	define("HOSTNAME","127.0.0.1");
	define("USERNAME","root");
	define("PASSWORD","");
	define("DATANAME","class");

	class Model{
		private $link;
		private $tableName;
		private $zd;
		private $method = array(
			"where" => "",
			"order" => "",
			"limit" => "",
			"group" => "",
			"having" => ""
			);
		public function __construct($tableName){
			$this -> tableName = $tableName;
			try{
				$this -> link = mysqli_connect(HOSTNAME,USERNAME,PASSWORD,DATANAME);
				mysqli_set_charset($this -> link,"UTF8");
			}catch(Exception $e){
				echo "数据库连接失败";
			}
			$this -> desc();
		}
		public function __destruct(){
			mysqli_close($this -> link);
		}
		public function desc(){
			$sql = " desc {$this -> tableName}; ";
			$res = mysqli_query($this -> link,$sql);
			$arr = mysqli_fetch_all($res,MYSQLI_ASSOC);
			for($i = 0 ;$i < count($arr);$i++){
				$brr[] = $arr[$i]['Field'];
			}
			$this -> zd = $brr;
			return $brr;
		}
		public function __call($name,$value){
			$name = strtolower($name);
			if(array_key_exists($name,$this -> method)){
				if($name == 'order'){
					$this -> method['order']  = " order by ".$value[0];
				}elseif($name == 'group'){
				$this -> method['group']  = " group by ".$value[0];
				}else{
					$this -> method[$name]  = " {$name} ".$value[0];
				}
			}else{
				return "the method is not found!";
			}
			return $this;
		}
		public function method(){
			return " {$this -> method['where']} {$this -> method['order']} {$this -> method['limit']} {$this -> method['group']} {$this -> method['having']}; ";
		}
		public function find($a="*"){
			if(in_array("{$a}",$this -> zd) || $a == "*"){
				$sql = "select {$a} from {$this -> tableName} {$this -> method()} ";
			}else{
				$sql = "select * from {$this -> tableName}";
			}
			//return $sql;
			$res = mysqli_query($this -> link,$sql);
			$arr = mysqli_fetch_all($res,MYSQLI_ASSOC);
			return $arr;
		}
	}

2. [code][PHP] code Jump to [1] [2] [Full screen preview]

<?
	function __autoload($className){
		require($className.".class.php");
	}

	$a = new Model("stu");
	$a -> where("name = 'zhu'")->limit("5,10");
	var_dump($a -> find("name"));
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn