10
votes

Où devrions-nous stocker des messages de confirmation / d'erreur dans l'application?

Je travaille sur PHP et Zend. Je dois montrer différents types de messages d'erreur / de confirmation dans l'application. La plupart de ces messages sont placés dans le code. Donc, si je dois changer un message, je dois le modifier partout où ce type de message particulier est codé.

Quelle est la meilleure façon de stocker tous les messages sur place et de les utiliser à travers l'application.

solutions possibles:


0 commentaires

6 Réponses :


7
votes

Vous pouvez avoir une sorte de classe statique dans le dossier de la bibliothèque. Qui contiendrait un ensemble de variables constantes telles que

Messages::showMessage(Messages::PRODUCT_SAVED_OK);


1 commentaires

Je pense que vous pouvez adopter une approche plus simple que ce que suggéra Ozair. J'ai changé le code dans ma réponse pour vous montrer comment. Fondamentalement, les variables constantes auraient des espaces réservés pour les informations dynamiques. Passer simple les données du format de tableau comme indiqué dans le code. La boucle de Foreach veillera à mettre les données que vous avez transmises dans le message.



1
votes

La première chose que vous devez aller regarder est ce que votre problème est.

Pour vous, il semble que la maintenance du code. Ce que j'ai trouvé pour travailler, c'est stocker tous ces messages en tant que classe distincte, par exemple appelé notifications (juste un exemple)

Chaque type de notification que vous appelleriez peut être stocké comme méthode afin que vous appelez le notificateur, il recevrait un message des membres de la classe qui peuvent facilement être modifiés en fonction de vos besoins.

stocker ces messages dans une base de données n'est pas une mauvaise façon de le faire, mais pas la solution réelle à votre besoin à ce stade. Cela signifie avoir à maintenir une autre table ajoutant des requêtes supplémentaires à votre code qui doivent être échappés correctement ,c. en bref, plus de maintenance au lieu de moins.

J'irais pour la classe dans laquelle vous pouvez stocker ces messages en tant que constantes de classe.

En outre, les membres de cette classe peuvent très facilement être traduits afin que ce soit votre meilleure option.


0 commentaires

1
votes

Si vous souhaitez afficher uniquement des messages statiques, La réponse non autorisée d'Elgabbu suffira.

Toutefois, si vous souhaitez afficher des messages comme: p>

Le produit Nom du produit em> a été enregistré avec succès. P> BlockQuote>

Vous aurez besoin de plus que cela. Dans ce cas, vous devriez définir un message message code> comme suit: p> xxx pré>

puis pour le message enregistré par produit, vous avez besoin d'une sous-classe P>

class ProductSaved extends Message {

    private $productName_ = "";

    __contruct($productName) {

        $this->productName_ = $productName;

    }

    public getMessage() {

        return "The product $productName_ has been saved successfully.";

    }
}


0 commentaires

2
votes

Que diriez-vous de le stocker dans une langue de codage non directe, puis utilisez une macro pour la transformer en une matrice ou une classe statique ou quoi que ce soit? Il peut être dans la base de données, XML ou tout ce que vous voulez. Vous n'auriez besoin que de 2 champs pour un message d'erreur: le nom du message et le contenu.

Par exemple, dans XML, vous pourriez faire cela: P>

// In both cases, day would be 3rd parameter to printf, month the second and year the first
$spanish = 'Hoy es %3$d/%2$d/%1$d';
$english = 'Today is %2$d/%3$d/%1$d';


0 commentaires

1
votes

Le meilleur moyen d'utiliser zend_translate (même si vous n'avez pas la version multilingue de votre site Web) + .ini, peut être accepté par d'autres applications / langues et vous pouvez la lire directement dans Traducteur ou via zend_config_ini. . Vous pouvez utiliser un fichier XML de la même manière. Énorme Pro est que vous pouvez facilement connecter Zend_Translator avec Zend_Form et avoir également traduit des étiquettes et des erreurs de validation.


0 commentaires

0
votes

"J'ai utilisé le traducteur de Zend Framework pour stocker les chaînes de messages de validation de formulaire dans les fichiers INI:

module.php p> xxx pré>

puis dans ./module/mymodule/language/ EN_UK.INI P>

    $inputFilter->add( array(
        'name'     => 'hasTagApproval',
        'required' => true,
        'validators' => array(
            array(
                'name' => 'Callback',
                'options' => array(
                    'messages' => array(
                        \Zend\Validator\Callback::INVALID_VALUE => 'tag_approved_but_no_id',
                    ),

                    .....
                ),
            ),


0 commentaires