Amazing PHP
9.94K subscribers
11 photos
84 links
Welcome to the Amazing PHP Channel! Here you can find a lot of interesting articles/news about PHP, frameworks, tools and development.

Support the channel: https://www.paypal.com/donate?hosted_button_id=FAYP5QJH5LVRL
Download Telegram
Vuestic Admin 2.0 - Free Vue.js Admin Template with 44 Custom UI Components
Use Vuestic Admin 2.0 as a "building blocks" to save time on developing an admin panel for your app. In V2:
- new, high-quality component design independent of Bootstrap
- truly reusable components
- more pages with tables and forms
- we were on frontpage of PH yesterday
- got platinum award on reddit
Service locator: an anti-pattern
As a Laravel developer, I'm confronted daily with the service locator pattern. Every facade call and several helper functions are built upon it.

Let's take a look at a common facade call: Auth::user(). The Auth facade will reach into Laravel's service container, grab the registered component, and forward the static call to that component. In this case, it'll return the logged in user.
​​Clean Code: A Handbook of Agile Software Craftsmanship
Clean Code is divided into three parts. The first describes the principles, patterns, and practices of writing clean code. The second part consists of several case studies of increasing complexity. Each case study is an exercise in cleaning up codeβ€”of transforming a code base that has some problems into one that is sound and efficient. The third part is the payoff: a single chapter containing a list of heuristics and β€œsmells” gathered while creating the case studies. The result is a knowledge base that describes the way we think when we write, read, and clean code.
Laracon US 2019
How to use Data Providers in PHPUnit
Data Providers are a handy feature of PHPUnit which allows you to run the same test with different inputs and expected results. This is useful when you are writing some text filtering, transformations, URL generation, price calculations, etc.
Abstracting API calls with Symfony serializer
As you can guess from reading the title this is not a getting started with article but it's about putting the Symfony components to work in order to solve day to day obstacles.
But what did we solve?
REST Security Cheat Sheet
REST (or REpresentational State Transfer) is an architectural style first described in Roy Fielding's Ph.D. dissertation on Architectural Styles and the Design of Network-based Software Architectures.
It evolved as Fielding wrote the HTTP/1.1 and URI specs and has been proven to be well-suited for developing distributed hypermedia applications. While REST is more widely applicable, it is most commonly used within the context of communicating with services via HTTP.
The value of the void typehint in PHP
When the void typehint was introduced in PHP 7.1. There was some debate about it. Some people wondered if it is beneficial to type nothing? I was one of them. Meanwhile, I changed my opinion on it. In this short post, I'd like to give you a small example where I think void shines.
How to write easily describable code
When code is not describable using words, most people have to do some mental mapping to turn it in to words. This wastes mental energy, and you run the risk of getting the mapping wrong. Different people will map to different words, which leads to confusion when discussing the code.
​​My favourite Git commit
I like Git commit messages. Used well, I think they’re one of the most powerful tools available to document a codebase over its lifetime. I’d like to illustrate that by showing you my favourite ever Git commit.
Dividing responsibilities - Part 1
We've looked at how objects can be used to retrieve information or perform tasks. The methods for retrieving information are called query methods, the ones that perform tasks are command methods. Service objects may combine both of these responsibilities. For instance, a repository (like the one in Listing 1) could perform the task of saving an entity to the database, and at the same time, it would also be capable of retrieving an entity from the database.
Dividing responsibilities - Part 2
Instead of creating a StockReport model from PurchaseOrderForStock objects, we could go directly to the source of the data, that is, the database where the application stores its purchase orders. If this is a relational database, there might be a table called purchaseorders, with columns for purchaseorderid, productid, orderedquantity, and wasreceived. If that's the case, then StockReportRepository wouldn't have to load any other object before it could build a StockReport object; it could make a single SQL query and use it to create the StockReport, as shown in Listing 11).
​​Documenting Software Architecture
We learn how to code and we build some cool applications, and then we learn about architecture and how to make the application maintainable for several years…
However when we need to explain to someone else (new developer, product owner, investor, …) how the application works, we need something more… we need documentation.
Yii2 Application Optimization
When projects are behind schedule, programmers may be tempted to implement solutions that are not the most optimal. This can result in clients having to deal with a variety of application issues, such as speed. In our applications, we often use Yii2 framework and through our experience we have learned how to make our applications faster by using optimal solutions
PHP 7.4 release is here
The PHP development team announces the immediate availability of PHP 7.4.0. This release marks the fourth feature update to the PHP 7 series.
PHP 7.4.0 comes with numerous improvements and new features such as:
Four Key Considerations When Running PHP Applications On Multiple Servers
Building and deploying PHP applications on one server is a, relatively, straightforward process. However, what about deploying a PHP application across multiple servers? In this article, I'm going to discuss four key considerations to bear in mind when deploying PHP applications when doing so.
Null Hell and How to Get Out of It
When used without a second thought, nulls can make your life miserable and you possibly don't even realize that they're the ones that cause you so much pain. Let me explain.
​​How to Make Your Code Reusable
Reusable code, as a one-stop solution to fix all software problems, is a dangerous myth. Let me explain why.
Let’s say you are writing a software library. You have a great idea bubbling in your head that can create a broadly reusable generic solution. You maniacally code APIs which cover all functionalities and cater to all scenarios. Every possible new scenario, you add it to your API. Your code grows disproportionately. But it is generic in the true sense and everybody starts using it. You are happy.
May your every morning be filled with joy & happiness. Wish you a very Happy New Year! May God's grace shine on you and your family. Wishing you all good health and great success.
Getting started with GitHub Actions and Laravel
When GitHub released its new product: GitHub Actions a whole new world opened for developers. Let's dive right in and see what it brings for the Laravel community.