PHPackages                             akyos/canopee-module-sdk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. akyos/canopee-module-sdk

ActiveSdk

akyos/canopee-module-sdk
========================

Symfony Canopee Module SDK

1.0(1y ago)04191MITPHPPHP &gt;=8.2

Since Jan 24Pushed 3mo ago1 watchersCompare

[ Source](https://github.com/akyoscommunication/CanopeeModuleSDK)[ Packagist](https://packagist.org/packages/akyos/canopee-module-sdk)[ RSS](/packages/akyos-canopee-module-sdk/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (10)Versions (4)Used By (1)

Notifier – Intégration &amp; fonctionnement
===========================================

[](#notifier--intégration--fonctionnement)

Ce bundle fournit une **infrastructure générique de notifications** permettant :

- de déclarer des notifications via un **Attribute PHP**
- de **scanner automatiquement** toutes les notifications disponibles
- de **déclencher une notification manuellement** (ex : interface d’admin / tests)
- de **résoudre automatiquement les arguments** attendus par chaque notification

👉 Le bundle fournit l’infrastructure. 👉 **L’application fournit les notifications concrètes et les données.**

---

1. Principe général
-------------------

[](#1-principe-général)

Une notification est :

- une **méthode publique**
- décorée avec l’attribut `#[Notifier]`
- définie dans un service Symfony

Exemple :

```
#[Notifier(
    name: 'notifier.event.reminder_manager.name',
    description: 'notifier.event.reminder_manager.description'
)]
public function notifyEventReminderManager(Event $event, $log): void
{
    // logique d'envoi
}
```

Chaque notification peut avoir **des paramètres différents**. Le bundle s’appuie sur des **ArgumentResolvers** pour fournir automatiquement des valeurs de test.

---

2. Ce que fournit le bundle
---------------------------

[](#2-ce-que-fournit-le-bundle)

Le bundle expose :

- `Notifier` (Attribute)
- `NotifierScanner`
- `NotifierExecutor`
- `NotifierArgumentResolverInterface`

Ces services sont **déjà configurés dans le bundle**.

⚠️ Le bundle **ne contient aucune notification métier**.

---

3. Configuration côté application (obligatoire)
-----------------------------------------------

[](#3-configuration-côté-application-obligatoire)

### 3.1 Déclarer les services de notification

[](#31-déclarer-les-services-de-notification)

Dans l’application, les services contenant des notifications doivent être **tagués** :

```
# config/services.yaml
services:
  App\Service\Notifier\:
    resource: '../src/Service/Notifier'
    tags: ['app.notifier']
    autowire: true
    autoconfigure: true
```

Chaque classe de ce dossier peut contenir plusieurs méthodes `#[Notifier]`.

---

### 3.2 Déclarer les ArgumentResolvers

[](#32-déclarer-les-argumentresolvers)

Chaque paramètre attendu par une notification doit être résolu via un resolver.

```
services:
  App\Service\Notifier\ArgumentResolver\:
    resource: '../src/Service/Notifier/ArgumentResolver'
    tags: ['app.notifier_argument_resolver']
    autowire: true
    autoconfigure: true
```

---

4. Créer un ArgumentResolver
----------------------------

[](#4-créer-un-argumentresolver)

Chaque resolver :

- implémente `NotifierArgumentResolverInterface`
- indique s’il supporte un argument
- retourne une valeur (souvent aléatoire) depuis la base de données

### Exemple : UserAccessRightResolver

[](#exemple--useraccessrightresolver)

```
class UserAccessRightResolver implements NotifierArgumentResolverInterface
{
    public function supports(\ReflectionParameter $parameter): bool
    {
        return $parameter->getType()?->getName() === UserAccessRight::class;
    }

    public function resolve(): mixed
    {
        return $this->repository->findOneBy([], ['id' => 'ASC']);
    }
}
```

👉 Le resolver est automatiquement utilisé dès qu’un paramètre correspond.

---

5. Scanner les notifications
----------------------------

[](#5-scanner-les-notifications)

Le service `NotifierScanner` permet de récupérer la liste complète des notifications disponibles.

```
$scanner->getNotifiers();
```

Retourne par exemple :

```
[
  'class' => 'App\\Service\\Notifier\\EventNotifier',
  'method' => 'notifyEventReminderManager',
  'name' => 'notifier.event.reminder_manager.name',
  'description' => 'notifier.event.reminder_manager.description',
]
```

Utile pour :

- une interface d’administration
- un écran de test
- une commande CLI

---

6. Exécuter une notification de test
------------------------------------

[](#6-exécuter-une-notification-de-test)

Le service `NotifierExecutor` :

- instancie le bon notifier
- résout les arguments
- appelle la méthode

```
$executor->execute(
    'App\\Service\\Notifier\\EventNotifier',
    'notifyEventReminderManager'
);
```

Les paramètres sont automatiquement injectés.

---

7. Cycle complet
----------------

[](#7-cycle-complet)

1. L’application déclare un notifier (`#[Notifier]`)
2. Le scanner le détecte
3. L’UI affiche un bouton "Tester"
4. L’executor est appelé
5. Les resolvers fournissent les données
6. La notification est envoyée

---

8. Bonnes pratiques
-------------------

[](#8-bonnes-pratiques)

- Une notification = **une responsabilité claire**
- Préférer des resolvers simples et déterministes
- Éviter la logique métier dans les resolvers
- Les notifiers doivent rester **stateless**

---

9. Résumé
---------

[](#9-résumé)

ÉlémentBundleApplicationInfrastructure✅❌Notifiers❌✅ArgumentResolvers❌✅UI / CLI❌✅---

Pour toute question ou extension (CLI, UI, permissions, filtres…), le système est conçu pour être extensible.

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance62

Regular maintenance activity

Popularity14

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 70.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~7 days

Total

2

Last Release

563d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/0712a2a59177f1f0b0e6be094ae8db913fcde12ed95915eb8b89992f66afade8?d=identicon)[AkyosDev](/maintainers/AkyosDev)

---

Top Contributors

[![akyoscommunication](https://avatars.githubusercontent.com/u/50996280?v=4)](https://github.com/akyoscommunication "akyoscommunication (50 commits)")[![JOULKVAJohan](https://avatars.githubusercontent.com/u/64126256?v=4)](https://github.com/JOULKVAJohan "JOULKVAJohan (17 commits)")[![lilianakyos](https://avatars.githubusercontent.com/u/84336616?v=4)](https://github.com/lilianakyos "lilianakyos (4 commits)")

---

Tags

sdkcanopee

### Embed Badge

![Health badge](/badges/akyos-canopee-module-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/akyos-canopee-module-sdk/health.svg)](https://phpackages.com/packages/akyos-canopee-module-sdk)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M648](/packages/sylius-sylius)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)[simplesamlphp/simplesamlphp

A PHP implementation of a SAML 2.0 service provider and identity provider.

1.1k12.4M193](/packages/simplesamlphp-simplesamlphp)[contao/core-bundle

Contao Open Source CMS

1231.6M2.3k](/packages/contao-core-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
