php - Am I using Domain Object correctly? -


according article here

you can think of them [services] "higher level domain objects", instead of business logic, services responsible interaction between domain objects , mappers. these structures end creating "public" interface interacting domain business logic. can avoid them, @ penalty of leaking domain logic controllers.

i have been reading on mvc, , ive split m part services, domain objects , data mappers. services , data mappers easy figure out, dont understand reason domain objects, can please give me examples? here code:

memberservice

class memberservice extends service {     public function authenticate()     {         $domainobject = $this->domainobjectfactory->getdomainobject('member');         $datamapper = $this->databasefactory->getmapper('member');            $_temp_sess_id = 0;         $_temp_sess_password = "";          $member = $datamapper->fetch( $_temp_sess_id );         $authenticationresult = $domainobject->checkpassword( $member['password'], $_temp_sess_password );          if (!$authenticationresult)         {             $member = ['user_id' => 0];         }          return $member;     } } 

memberdomainobject

class memberdomainobject extends domainobject {     public function checkpassword( $datamapperpassword, $locallystoredpassword )     {         if ( $datamapperpassword !== $locallystoredpassword )             return false;         return true;     } }      

update:

this question regarding method checkpassword , why necessary create separate object use if statement used inside service instead, saving ram using additional resources creating new object.

you've created memberdomainobject trough factory in example. code showing has none 0 informational value purpose.

you need make real app few objects, services , 2 domains @ least, can "you using domain objects well".

aren't interested in "model objects"? no need talk domain objects if need sure correct "service > factory > model object > mapper" relation using.


creating objects via factory practice can alter or add contructor calls during refactor in 1 place.

one advice is: use class names namespaces (fqn) in factories, helps navigating trough code , refactoring well

$member = $this->domainobjectfactory->getdomainobject(memberdomainobject::class); //in php5.5+ 

you can substitute

class domainobject {     static function classname(){       return get_called_class();    } }  $member = $this->domainobjectfactory->getdomainobject(memberdomainobject::classname()); 

in php <= 5.4 , replace on upgrade.

as same the

$member = $this->domainobjectfactory->getmember(); 

is not issue, can specify returning type in ::getmember()


Comments

Popular posts from this blog

how to insert data php javascript mysql with multiple array session 2 -

multithreading - Exception in Application constructor -

windows - CertCreateCertificateContext returns CRYPT_E_ASN1_BADTAG / 8009310b -