Hall of Famer Posted September 16, 2011 Share Posted September 16, 2011 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: Write everything inside a gigantic method, such as select() 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","ARRAY", "LIMIT = 1"); Approach 2: Use Object Method Chaining 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. Link to comment https://forums.phpfreaks.com/topic/247250-regarding-php-objects-method-chaining/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.