php is a weakly typed language. Normally, the type of variables is not defined. But if you are a JAVA or .NET developer, you will not be able to adapt to PHP. Or when you want to write an ORM framework similar to hibernate, without the concept of entity classes, it is not easy to control. Let me briefly talk about how to implement the concept of entity classes in PHP.
First build a basic Model class
<?php class BaseModel{ private $_tableName; public function construct($tableName=""){ $this->_tableName=$tableName; } public function getTableName(){ return $this->_tableName; } public function getFieldsArray(){ try { $obj=json_decode(json_encode($this),true); //此处可能会影响效率,但是为了去除类中的private属性,目前是这么做的 $fieldsArray=array(); foreach ($obj as $k=>$v){ $fieldsArray[]=$k; } return $fieldsArray; } catch (Exception $e) { throw new Exception($e,3, $previous); } } public function find($condition=null){ try { $sql="select ".implode(",",$this->getFieldsArray())." from ".$this->_tableName." "; if($condition){ $sql.=" where ".$condition; }else { $obj=json_decode(json_encode($this),true); $fieldsArray=array(); foreach ($obj as $k=>$v){ if($v!=null && $v!=""){ $fieldsArray[]=$k."='".$v."'"; } } if(count($fieldsArray)>0){ $sql.=" where ".implode(" and ", $fieldsArray); } } return $sql; } catch (Exception $e) { throw new Exception($e,3, $previous); } } } ?>
Then let’s build a class that corresponds to the table in the database and will be used in the project
<?php class MemberModel extends BaseModel{ public $m_ID; public $m_Account; public $m_Pwd; public $m_TEL; public $m_UserID; public $m_ChannelID; public $m_Status; public $m_CreateTime; public $m_UpdateTime; } ?>
The following is how the entity class is Went to use it
First time looking at controller
public function actionSelectMember(){ try { $member=new MemberModel("T_Member"); $member->m_Account=GetValue::getParam("Account"); $member->m_Pwd=GetValue::getParam("Pwd"); $result=MemberService::selectMember($member); if($result){ Yii::app()->session["MemberID"]=$result["m_ID"]; echo IMReturnStr::success(); }else { echo IMReturnStr::GetInfo(false,"用户名或者密码错误"); } } catch (Exception $e) { echo IMReturnStr::failure(); } }
service
<p style="margin-bottom: 7px;"> public static function selectMember(MemberModel $member){<br/> try {<br/> return MemberDao::selectMember($member);<br/> } catch (Exception $e) {<br/> throw new Exception($e,4);<br/> }<br/> }</p>
dao
public static function selectMember(MemberModel $member){ //这里就是为什么要写类型了,写了类型可以拿到定义的类中的方法,否则虽然也可以直接写,但是没有自动提示,如果用的方法比较多,就很蛋疼了。 try { $sql=$member->find(); return YIISqlOper::queryRow($sql); } catch (Exception $e) { throw new Exception($e,4); } }
The above is the detailed content of How to use entity classes in php. For more information, please follow other related articles on the PHP Chinese website!