Well I am trying to design a class called database, which will significantly reduces the amount of codes/lines running mysql query in a script file. The object methods are basically mysql operations such as create(), select(), update(), insert(), delete() and so on. I have two possible approaches to execute mysql queries, and lemme illustrate point with the 'select from table' method:
Approach 1: The template and method definition are shown below, not with actual codes:
class Database{
// codes
public function select($table, $columns, $index, $where, $comparison, $logic, $returntype, $extra){
// codes to return a highly customized query string, then execute this query, and finally returns any type as specified in $returntype(field, string, row, assoc, array or object)
// the codes are extremely long here...
}
// more codes
}
// to return an array, for instance, the following line may be written to retrieve database info:
$db = new Database($databasehost, $userName, $userPassword, $databaseName);
$array = $db->select("users", array("password", "email"), true, array("id" => 1, "username" => "admin"), "=", "AND", "LIMIT = 1");
Approach 2: Slice the huge object method into a chain of methods that can be run altogether to derive the same result:
class Database{
private $method, $table, $column, $where, $comparison, $logic, $limit, $returntype;
public function select($column == "*"){
// simple codes here
}
public function table($table){
// simple codes here
}
public function where($where){
// simple codes here
}
public function comparison($comparison){
// simple codes here
}
public function logic($logic){
// simple codes here
}
public function limit($limit){
// simple codes here
}
public function result($method){
// execute the query and is ready to fetch
}
public function fetch($returntype){
// fetch rows, assoc, array, objects or else based on return type
}
}
// to return an array, for instance, we execute multiple methods altogether:
$db = new Database($databasehost, $userName, $userPassword, $databaseName);
$array = $db->select(array("password", "email"))->table("user")->where(array("id" => 1, "username" => "admin" )) -> comparison("=") -> logic("AND") => limit(1) -> result() -> fetch("ARRAY");
Both approaches are likely to work on my site, but I do not know which one is considered more professional and which one runs better performance-wise. The first approach is quite complicated to use for another programmer, but it may be more efficient. The second approach is more readable and flexible, while I wonder if running a chain of object methods will consume a huge amount of CPU and bandwidth. Can anyone of you please gimme your points of view on this? Thank you so much.