Remember what I said in the previous section? Due to the proper application of the Dependency Injection pattern, it’s possible to remove the factory method defined inside the earlier MySQL abstraction class, since in this case, it will be pretty useless for creating persistent objects. However, the best approach to understanding why removing this factory method won’t cause any impact in the way that those persistent objects are spawned is by examining some functional code. So, below is the modified definition of the MySQL handling class, this time without exposing its factory method. Here it is: class MySQL { private $result = NULL; private $link = NULL;
// connect to MySQL public function __construct($host, $user, $password, $database) { if (FALSE === ($this->link = mysqli_connect($host, $user, $password, $database))) { throw new Exception('Error : ' . mysqli_connect_error()); } }
// perform query public function query($query) { if (is_string($query) AND empty($query) === FALSE) { if (FALSE === ($this->result = mysqli_query($this->link, $query))) { throw new Exception('Error performing query ' . $query . ' Error message :' .mysqli_error($this->link)); } } }
// fetch row from result set public function fetch() { if (FALSE === ($row = mysqli_fetch_assoc($this->result))) { mysqli_free_result($this->result); return FALSE; } return $row; }
// get insertion ID public function getInsertID() { return mysqli_insert_id($this->link); } // count rows in result set public function countRows() { if ($this->result !== NULL) { return mysqli_num_rows($this->result); } } // implement destructor to close the database connection function __destruct() { mysqli_close($this->link); } } There you have it. As I explained a moment ago, now the “MySQL” class lacks its factory method, but its functionality remains practically the same. So, what’s the point in removing it, after all? Good question, indeed. In reality there’s no an actual need to get rid of this method at all. Nonetheless, I wanted to do this so you could see that even without its presence, it’s feasible to build the same persistent objects that you saw before with only minor hassles. But guess what? Showing you the example will be the perfect conclusion for this last part of the series. So click on the link below and read the next few lines. We’re almost finished!
blog comments powered by Disqus |
|
|
|
|
|
|
|