5 valuable packages helpful for every PHP developer
Most of today’s web applications deliver a rich experience to their users. Website owners or business managers need more and more features integrated into their websites within a short period. Inevitably, it becomes a challenge for web developers to satisfy the expectations of the site owners if they had to develop everything from the beginning. That is where the packages come into action.
Being the most popular web programming language, PHP has many such packages available freely for anyone to use for their web projects. Composer is a tool that helps to find and install them in your PHP project. Composer uses Packagist, which is a directory of publically available PHP packages. GitHub hosts most of the packages you find on Packagist.
I’m trying to list a few of the most commonly required packages available on GitHub for you. Perhaps it will save a few valuable hours of your development time. I avoid PHP frameworks and focus on few libraries you can use with any framework.
1. Swift Mailer
Sending emails is a common feature of many web applications. They send emails for registration verifications, action notifications, newsletters, password recovery, and many more. Swift Mailer helps you streamline your email sending process.
The recommended way to install Swiftmailer is via Composer:
$ composer require "swiftmailer/swiftmailer:^6.0"
// Require composer autoload require_once '/path/to/vendor/autoload.php'; // Create the Transport $transport = (new Swift_SmtpTransport('smtp.example.org', 25)) ->setUsername('SMTP_USERNAME') ->setPassword('SMTP_PASSWORD'); // Create the Mailer using your created Transport $mailer = new Swift_Mailer($transport); // Create a message $message = (new Swift_Message('Greetings from NTERMS')) ->setFrom(['firstname.lastname@example.org' => 'NTERMS']) ->setTo(['email@example.com', 'firstname.lastname@example.org' => 'John Doe']) ->setBody('Hello there, Welcome to NTERMS!'); // Send the message $result = $mailer->send($message);
We are using SMTP Transport to send the email in the example. SwiftMailer supports both SMTP and SendMail email transport methods. Also, it comes with LoadBalanced and Failover transport methods to cover advanced email sending scenarios. Read the official guide to learn more.
SwiftMailer comes as the default mail library in some famous PHP frameworks. Also, it has wrappers for easy integration with many others. Thought you can’t
The good side is using it for your project is straightforward. You can install and use its classes directly in your code.
One of the most challenging tasks for me as a web developer is dealing with dates and timestamps. Almost all web applications are making use of data and time values. PHP has its DateTime class for supporting this. But, it comes with a limited set of features. Carbon is there to solve this by extending the functionality of the DateTime class. It comes with a rich set of features such as parsing time strings in many formats, a vast set of functions for time calculations, convert time values to display in different formats, and performing comparisons between times.
The recommended way to install Carbon is via Composer:
$ composer require nesbot/carbon
// Require composer autoload require_once '/path/to/vendor/autoload.php'; use Carbon\Carbon; // show the time at the moment printf("Now: %s", Carbon::now()); // Miltiple ways to create a date time object $date = new Carbon('first day of January 2008'); $date = Carbon::parse('2018-03-16') $datetime = Carbon::create(1975, 12, 25, 14, 15, 16); // Display in different formats echo $datetime->toDateString(); // 1975-12-25 echo $datetime->toFormattedDateString(); // Dec 25, 1975 echo $datetime->toTimeString(); // 14:15:16 echo $datetime->toDateTimeString(); // 1975-12-25 14:15:16 echo $datetime->toDayDateTimeString(); // Thu, Dec 25, 1975 2:15 PM
Its concise documentation is simple enough for anyone to understand what does it do and how.
Most of the time, PHP code generates HTML as the output. But there are cases you need to generate PDF as well. Web applications allow their users to download copies of the invoices and reports as PDF files. mPDF could be the best PHP library out there to assist you in this.
mPDF comes with a comprehensive set of functions to help you with everything you need to do with your PDF documents. The most significant feature among all is converting HTML+CSS documents to PDF. Often you can use the same HTML & CSS to show your documents on screen and to generate the PDF version of them. mPDF also supports generating table of contents, setting different page sizes, layouts, page orientation, page breaks, using true type fonts, and embedding images.
The recommended way to install mPDF is via Composer:
$ composer require mpdf/mpdf
// Require composer autoload require_once '/path/to/vendor/autoload.php'; use Mpdf\Mpdf; // Create an instance of the class: $mpdf = new Mpdf(); // Write some HTML code: $mpdf->WriteHTML('<h1>Hello world!</h1>'); // Output a PDF file directly to the browser $mpdf->Output();
You have many output options such as viewing the generated PDF documents in the web browser itself, download or save into a file on the server.
Please read the official documentation of mPDF to find out more.
Today’s web applications can’t forget images. They need to work with images at least to let their users have a profile picture. Not all image files uploaded by the users are in the format the web application need. They need to be resized, cropped, optimized, or enhanced according to the application requirements. That is where Intervention Image becomes your best ally.
Intervention Image supports creating new images as well as working with images loaded from the filesystem. It offers many image operations such as resizing, cropping, adjusting image properties (brightness, contrast, gamma), drawing, and applying filters.
The recommended way to install Intervention Image is via Composer:
$ composer require intervention/image
// Require composer autoload require_once '/path/to/vendor/autoload.php'; // Import the Intervention Image Manager Class use Intervention\Image\ImageManager; // Create an image manager instance with favored driver $manager = new ImageManager(array('driver' => 'imagick')); // Load an image from disk and resize it $image = $manager->make('public/foo.jpg')->resize(300, 200)->save('bar.jpg');
You can create Image objects and chain functions to apply multiple operations. It also utilizes a plugin (
intervention/imagecache) to support image caching that improves performance by storing processed images. If you are developing a Laravel application, you can use URL to manipulate images dynamically while caching the result for better performance.
Last but not least, this package serves you, not your application users. One thing you can’t forget while programming is debugging your code. Often programmers need to check the current application state to understand how things are going on with their code. PHP developers use
echo functions to write the value of variables to the output to achieve this. You can use PHP Debugbar to get a snapshot of the application state to make the debugging process easier and faster.
The recommended way to install PHP Debug Bar is via Composer:
$ composer require maximebf/debugbar
Please read the official documentation of PHP Debug Bar to learn more.