Amazing PHP
9.32K 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
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.
​​Go vs PHP syntax comparison
Go is a statically typed and compiled language designed by Google. It is somewhat similar to C. However, it is packed with more goodies such as garbage collection, memory safety, structural typing and concurrency. Its concurrency mechanisms make it possible to get the most out of the multicore and network machines.
​​How to build a Laravel REST API with Test-Driven Development
Today we’ll be going on a Laravel journey driven by tests. We’ll create a Laravel REST API complete with authentication and CRUD functionality without opening Postman or a browser.
Backorder expiring domain names
Find a cool domain, backorder it and own it.
Amazing PHP pinned Β«Backorder expiring domain names Find a cool domain, backorder it and own it.Β»
New in PHP 8
PHP 8, the new major PHP version, is expected to be released by the end of 2020. It's in very active development right now, so things are likely to change a lot in the upcoming months.
How fast is PHP-8 going to be?
PHP-8 is going to be released at the end of this year, and one of its most exciting features is JIT compilation. Let’s see how it improves the speed of a PHP script.
Clean Code and Object Calisthenics Rules I try to Follow
I do a lot of Code Reviews, and without proper automation of most of the low level items that you are usually β€œremarking” to colleagues it is a frustrating experience for everyone involved and takes more time that needed.
Writing a Damn Good README File
Raise your hand if you’ve ever read a README file. Now, keep that hand raised if you’ve ever written a README file. I’m going to take a shot in the dark and assume that your hand is still raised; at least, it’s raised in spirit, since you probably refuse to flail your arms about like a crazy person just because I tell you to.
New in Symfony 5.1
A series of posts showcasing the new features introduced by each Symfony version.
Testing without mocking frameworks.
Over the years, my coding practices have changed a lot. From hacking away until it works to TDD/BDD/DDD and everything in between. One of the biggest changes in my developer career has been when, why, and how I test my code. In particular, my view on mocking frameworks has changed a lot. A couple of years ago I was convinced I could not live without them, now I wish I could do just that.
Circuit Breaker Pattern
In most systems, we use remote calls. Many factors may have an impact on these remote calls e.g. network latency, server availability and so on. So we should assume that something can go wrong. These calls can be potential bottlenecks, we don’t want user waiting for the response from the server very long, because external API is very slow or not available. Also if we have a few services which communicate with each other we shouldn’t aggravate the situation when one of them has too much traffic and slow down significantly. So how to do it correctly?