> CopixErrorObject > Documentation > CopixDBException > CHANGELOG_Copix3 > ModuleCredential > CHANGELOG_COPIX3 > old_news_2007 > CopixServices
fr

Introduction

CopixServices est la classe de base pour l'implémentation des services sous Copix.

Lorsque vous utilisez un service, vous êtes assurés que tout s'exécute dans un contexte transactionnel (et donc que votre base n'est modifiée que si les opérations sont réussies).

Exemple d'utilisation


try {
   //demande de publication de la nouvelle d'identifiant 4
   $results = CopixServices::process ('module|News::publish', array ('id_news'=>4));
}catch (exception $e){
   //CopixServices aura fait un rollback pour nous car l'opération a échouée.
   //Il ne nous reste plus qu'a indiquer à l'utilisateur que ce n'est pas possible.
}
 

Exemple d'implémentation d'un service

Dans le fichier cheminModuleNews/news/classes/news.services.php


class ServicesNews extends CopixServices {
   private function publish (){
      //On trace dans la table d'historique les modifications
      $recordHistorique = CopixDAOFactory::createRecord ('NewsHistorique');
      $daoHistorique    = CopixDAOFactory::create ('DaoHistorique');
      $recordHistorique->date_hist = date ('Ymd');
      $daoHistorique->insert ($recordHistorique);

      $daoNews = CopixDAOFactory::create ('News');
      if (($newsRecord = $daoNews->get ()) !== null){
         $newsRecord->status_news = NEWS::Published ();
         $daoNews->update ($newsRecord);
      }else{
          throw new ApplicationException ("La nouvelle à publier n'existe pas");
      }
   }
}
 

Dans cet exemple, si nous arrivons dans le cas ou la nouvelle n'existe pas (on lance l'exception), Copix annule pour vous les insertions qui ont déjà été réalisées via le $daoHistorique.

En bref, si jamais une exception est levée par votre service, toutes les modifications en cours sur les bases sont annulées automatiquement !

Paramétrage de la gestion transactionnelle

Au moment de l'appel, vous pouvez spécifier la façon dont vous voulez que CopixServices gère la transaction

Exemple


   CopixServices::process ('SomeService::someMethod', array ('param'=>$param), CopixServices::NEW_TRANSACTION);