数据库建表时,我们有时会这样命名"resource_id" 来表示这是个resource表里面的"id"字段。当表名比较长时我们可能会这样"resource_ref"表示资源影射表。这样的表通常有外键,很可能就是我们在开头命名的"resource_id"。这时候字段名可能就变成"resource_ref_resource_id"。OK,这样稍微比一长串字符串的命名好认一些。但做实体的时候,你应该不要做一模一样的命名。
View Code
1 <? php
2 class Zwb_Models_Entity_ResourceRef {
3 private $_id;
4 private $_roleId;
5 private $_resourceId;
6
7 public function get ($key){
8 return $ this -> { ' _ ' .$key};
9 }
10
11 public function set ($key,$val){
12 $ this -> { ' _ ' .$key} = $val;
13 }
14 /* *
15 * @return the $id
16 */
17 public function getId() {
18 return $ this -> _id;
19 }
20
21 /* *
22 * @return the $roleid
23 */
24 public function getRoleid() {
25 return $ this -> _roleId;
26 }
27
28 /* *
29 * @return the $resourceid
30 */
31 public function getResourceid() {
32 return $ this -> _resourceId;
33 }
34
35 /* *
36 * @param $id the $id to set
37 */
38 public function setId($id) {
39 $ this -> _id = $id;
40 }
41
42 /* *
43 * @param $roleid the $roleid to set
44 */
45 public function setRoleid($roleid) {
46 $ this -> _roleId = $roleid;
47 }
48
49 /* *
50 * @param $resourceid the $resourceid to set
51 */
52 public function setResourceid($resourceid) {
53 $ this -> _resourceId = $resourceid;
54 }
55
56
57 }
对应起来可以这样
<? php
class Zwb_Functions_CapitalToUnderline {
public static function capitalToUnderline($str) {
$temp = preg_split( " /(?=[A-Z])/ " , $str);
if (count($temp) > 1 )
{
$arr = implode( ' _ ' , $temp);
return strtolower($arr);
}
return $str;
}
}
public function fetchAll($options) {
$table = Zwb_Functions_CapitalToUnderline::capitalToUnderline($options[ ' table ' ]);
$db = Zwb_Models_DbEntry::getInstance() -> getdb();
$objects = array();
$result = $db -> fetchAll( " SELECT * FROM " .$table);
$objectName = ' Zwb_Models_Entity_ ' .ucfirst($table);
foreach ($result as $row)
{
$ object = new $objectName();
$objectArray = (array) $ object ;
foreach ($objectArray as $key => $val)
{
$key = trim(substr($key, strlen($objectName) + 3 )); // 类成员为私有,转换时要去除类名
$tablekey = Zwb_Functions_CapitalToUnderline::capitalToUnderline($key);
$ object -> set ($key, $row[$table. ' _ ' .$tablekey]);
}
$objects[] = $ object ;
}
return $objects;
}