我们以Model:Users来讨论下Solar的Model文件结构,与模型Users相关的文件如下:
/Admin/Model/Users.php /Admin/Model/Users/Metadata.php /Admin/Model/Users/Record.php /Admin/Model/Users/Collection.php /Admin/Model/Users/Locale/en_US.php
-
/Admin/Model/Users.php
类:Admin_Model_Articles [extends] Admin_Sql_Model,在此可以添加Filter或与其它模型的关系。 -
/Admin/Model/Users/Metadata.php
类:Admin_Model_Articles_Metadata [extends] Admin_Sql_Model_Metadata,该类存放了数据表users各字段的属性。 -
/Admin/Model/Users/Record.php
类:Admin_Model_Articles_Record [extends] Admin_Sql_Model_Record。 -
/Admin/Model/Users/Collection.php
类:Admin_Model_Articles_Collection [extends] Admin_Sql_Model_Collection。 -
/Admin/Model/Users/Locale/en_US.php
各字段的本地化字符,相应的字段名前加LABEL_
构成本地字符串的键,这主要为模型生成的表单转换标签label有用。
在/Admin/Sql/目录下有如下文件:
/Admin/Sql/Model.php /Admin/Sql/Model/Metadata.php /Admin/Sql/Model/Record.php /Admin/Sql/Model/Collection.php
-
Admin/Sql/Model.php
类:Admin_Sql_Model [extends] Solar_Sql_Model -
Admin/Sql/Model/Metadata.php
类:Admin_Sql_Model_Metadata [extends] Solar_Sql_Model_Metadata -
Admin/Sql/Model/Record.php
类:Admin_Sql_Model_Record [extends] Solar_Sql_Model_Record -
Admin/Sql/Model/Collection.php
类:Admin_Sql_Model_Collection [extends] Solar_Sql_Model_Collection
各类都是简单的继承了Solar的类,为Admin的模型继承Solar模型做了一个桥梁作用。
又因为:
-
Solar_Sql_Model_Record [extends] Solar_Struct
-
Solar_Sql_Model_Collection [extends] Solar_Struct
由上,所以:
-
Admin_Model_Articles [extends] Solar_Sql_Model
-
Admin_Model_Articles_Metadata [extends] Solar_Sql_Model_Metadata
-
Admin_Model_Articles_Record [extends] Solar_Sql_Model_Record [extends] Solar_Struct
-
Admin_Model_Articels_Collection [extends] Solar_Sql_Model_Collection [extends] Solar_Struct
因为$item = $this->_model->fetch()
语句返回的是Admin_Model_Articles_Record
的对象,而又该类继承自Solar_Struct
,而Solar_Strutc
实现了对象与数组的混合使用,所以在View文件中我们使用$item->id与$item['id']
结果相同。