在數(shù)據(jù)庫中使用對象的好處
我們都知道如何從數(shù)據(jù)庫中獲取我們需要的行(記錄),讀取數(shù)據(jù),然后存取一些改動。很明顯也很直接,在這個過程背后也沒有什么拐彎抹角的。然而對于我們使用面對對象的程序設計(OOP)來管理我們數(shù)據(jù)庫中的數(shù)據(jù)時,這個過程就需要大大改進一下了。這篇文章將對如何設計一個面對對象的方式來管理數(shù)據(jù)庫的記錄做一個簡單的描述。你的數(shù)據(jù)當中的所有內部邏輯關系將被封裝到一個非常條理的記錄對象,這個對象能夠提供專門(專一)的確認代碼系統(tǒng),轉化以及數(shù)據(jù)處理。隨著Zend Engine2 和PHP5的發(fā)布,PHP開發(fā)者將會擁有更強大的面對對象的工具來輔助工作,這將使這個過程(面對對象地管理數(shù)據(jù)庫)更有吸引力。
以下列出了一些使用對象來描敘你的數(shù)據(jù)庫的有利方面:
1、存取方法(Accessor methods)將會使你對屬性的讀取和寫入過程做到完全的控制
2、每一級的每個記錄和屬性(的操作)都有確認過程
3、從關系表中智能的獲取對象
4、重復使用的邏輯方法意味著所有的數(shù)據(jù)交互都要通過相同的基礎代碼(codebase),這將使維護變得更加簡單
5、代碼簡單,因為不同的記錄的內部邏輯都已經(jīng)包含在各自所處的類(class)當中,而不是繁瑣的庫(lib)文件
6、在手工編寫代碼和SQL查詢語句時,出錯的機會將更少
存取方法(Accessor methods)
存取方式是通過類給實例(instance)的變量賦值。一個例子,我有一個叫User的類,并且有一個實例$username,我會寫這樣的存取方法(函數(shù)),User->username()和User->setUsername()用來返回和給實例賦值。
<?php
class User {
var $username;
function username() {
return $this->username;
}
function setUsername($newUsername) {
$this->username = $newUsername;
}
}
?>
這里有很好的理由讓我們編寫這樣的“特別的代碼”。它將使開發(fā)者更靈活的改變類的繁瑣的工作,因為這一過程將不需要其他的使用類的php代碼。讓我們來看看下面這個更加完善的可信賴的User類。
變量$username將不復存在,所有的東西都被整合的放在數(shù)組$_data當中
如果username是空的話,username()函數(shù)將提供一個缺?。J)的值給它
setUsername()過程將在接受值之前確認username是否合乎標準格式(如字長等)
<?php
class User {
var $_data = array(); // associative array containing all the attributes for the User
function username() {
return !empty($this->_data['username']) ? $this->_data['username'] : '(no name!)';
}
function setUsername($newUsername) {
if ($this->validateUsername($newUsername)) {
$this->_data['username'] = $newUsername;
}
}
function validateUsername(&$someName) {
if (strlen($someName) > 12) {
throw new Exception('Your username is too long
關于在數(shù)據(jù)庫中使用對象的好處就為大家總結這么多, 相信大家通過上文的學習,對在數(shù)據(jù)庫中使用對象的好處有所了解,大家可以在以后的工作中在數(shù)據(jù)庫中使用對象,相信這樣會給大家的工作帶來很多的便利,最后,希望大家都能夠從上文中涉及到的內容中有所收獲。