Skip to content

Remove Abandoned Laminas Packages and Suggest Alternatives #105

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

nynka
Copy link

@nynka nynka commented Mar 28, 2025

This PR removes the abandoned Laminas packages (laminas-db, laminas-mail, laminas-log) from the project and suggests replacing them with other alternatives such as monolog/monolog and symfony/mailer. Users of the package can select any logger implementation based on psr/log and use Monolog handlers to get email functionality based on Symfony Mailer instead of relying on the Laminas packages.

Changes:

  1. Remove Laminas Packages:

    • Removed laminas-db, laminas-mail, and laminas-log from composer.json.
  2. Update Configuration:

    • Updated the configuration files to use monolog/monolog and symfony/mailer.
  3. Instructions for Users:

    • Add instructions for users to select any logger implementation based on psr/log and use Monolog handlers for email functionality.

Detailed Changes:

  1. composer.json:

    {
        "require": {
            "php": "~8.2.0 || ~8.3.0 || ~8.4.0",
            "laminas/laminas-diactoros": "^2.26 || ^3.5.0",
            "psr/log": "^1.1 || ^2.0",
        },
       "require-dev": {
           "doctrine/doctrine-orm-module": "^4.2.1 || ^5.3 || ^6.0",
           "laminas/laminas-coding-standard": "^3.0",
           "laminas/laminas-servicemanager": "^3.23 || ^4.0",
           "monolog/monolog": "^3.9",
           "symfony/mailer": "^7.2"
       },
       "suggest": {
           "monolog/monolog": "Sends your logs to files, sockets, inboxes, databases and various web services",
           "symfony/mailer": "Symfony's Mailer & Mime components form a powerful system for creating and sending emails"
     },
    }
  2. php/ErrorHeroModule/config/module.config.php:

    use Monolog\Logger;
    use Monolog\Handler\StreamHandler;
    use Psr\Log\LoggerInterface;
    
    return [
        'service_manager' => [
            'factories' => [
                'ErrorHeroModuleLogger' => function (): LoggerInterface {
                    $logger = new Logger('error-hero-module');
                    $logger->pushHandler(new StreamHandler('path/to/your.log', Logger::DEBUG));
                    return $logger;
                },
            ],
        ],
    ];
  3. Instructions for Users:

    • To use different logger implementations, ensure it implements psr/log.
    • For email functionality, configure Monolog handlers with Symfony Mailer:
      use Monolog\Logger;
      use Monolog\Handler\SymfonyMailerHandler;
      use Symfony\Component\Mailer\Mailer;
      use Symfony\Component\Mailer\Transport;
      use Symfony\Component\Mime\Email;
      
      $transport = Transport::fromDsn('smtp://localhost');
      $mailer = new Mailer($transport);
      $message = (new Email())
          ->from('[email protected]')
          ->to('[email protected]')
          ->subject('Error Notification')
          ->text('An error occurred.');
      
      $logger = new Logger('error-hero-module');
      $logger->pushHandler(new SymfonyMailerHandler($mailer, $message, Logger::ERROR));

Testing:

  • Ensure the application works correctly with the new logger and mailer configurations.
  • Verify that error logging and email notifications function as expected.

Note:

  • Users should update their composer.json and configuration files accordingly.
  • Detailed documentation on configuring Monolog and Symfony Mailer can be found in their respective documentation.

Closing:
This PR aims to modernize the package by removing dependencies on abandoned Laminas packages and providing more flexible and widely-used alternatives and support the latest versions of PHP. It also reduces the complexity of the package itself.

@nynka
Copy link
Author

nynka commented Mar 28, 2025

@samsonasik It seems logical to allow the user to choose their preferred logger implementation and then utilize the writers/handlers for notifications specific to that package?

@samsonasik
Copy link
Owner

If that cause extra step, eg: require symfony/* lib, that probably not preferable, except we add option in command line to choose which lib to use, like mezzio-skeleton https://user-images.githubusercontent.com/1011217/90332191-55d32200-dfbb-11ea-80c0-27a07ef5691a.png

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants