Jump to content
php.lv forumi

MVC, kur un ko


teiks
 Share

Recommended Posts

3. Library klases - klases kas darbojas ar repositorijiem un satur visu biznesa loģiku (piem, addMoney($userId, $amount) metode atlasītu useri no repositorija, pārbaudītu vai viņš drīkst saņemt naudu, pieskaitītu naudu makam un izsauktu repositorija metodi, kas veic saglabāšanu.

 

Kontrolieri sauc tikai library metodes, nekādā gadījumā uz savu galvu nesauc modeļu saglabāšanas utt, jo tas viss notiek caur librarijiem -> repositorijiem.

 

Forša pieeja..

Kā tādā gadījuma izskatās tavs kontrolleris? izklausās kaut kā šādi:

public function action( Library $library, int $id )
{
    if( $library->doBusinessLogic( $id ) )
    {
        return redirect()->back()->withSuccess();
    }
    
    return redirect()->back()->withError();
}

Btw, vai arī šitik vienkāršā gadījumā tu tur iejūgu kādu libu vai repo? Šo tāpat diez vai testēs:

public function destroy( Item $item )
{
    $item->delete();
    return redirect()->back()->withSuccess();
}
Edited by karstakritene
Link to comment
Share on other sites

Es tā padomāju - tas izklausās pēc Kontrollera izgudrošanas no jauna un nosaukšanas par libu. Tik pat labi varētu notestēt kontrolleri. Vai arī te ir vēl kāds iemesls tā rīkoties?

 

Ne gluži. Vai tad redirektus veicam libos?  Atškirībā no kontrolieriem, libus var normāli atkārtoti izsaukt no dažādām vietām.

 

Piemēram, ja ir API - tas atkali ir savs/savādāks kontrolieris, kas ievāc datus no inputa un padod atkal uz libiem. Tad atkal ir kaut kāds komandrindas rīks - tas arī ir sava veida kontrolieris, tikai inputs tiek padots kā argumenti. Ievācam tos un izsaucam libu.

 

Tā ir besīga mode visu loģiku bāzt kontrolieros, kam beigās metodes izaug uz pārsimt rindām, un loģiku nevar atkārtoti izmantot nekur.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...