Looking for more information on how to do PHP the right way? Check out PHP: The Right Way

Tomas Votruba:
Brief History of Tools Watching and Changing Your PHP Code
Oct 24, 2018 @ 10:52:23

Tomas Votruba has a new post to his site sharing a listing of some of the more useful and well-established development tooling for PHP and related technologies.

From coding standard tools, over static analysis to instant upgrade tools. This post is going to be a geeky history trip.

Which tool was first? How they build on shoulders of each other?

Are you a lazy programmer who wants to delegate as much work as possible to 3rd party code? Today, you'll become even lazier.

He breaks the article down into three sections, each with several tools linked under them:

  • Coding Standard Tools
  • Static Analysis Tools
  • Instant Upgrade Tools

The items under each link to more information about the tool and provides a brief summary of how it helps you and your code. There's not any examples of them in use, though. You'll need to visit the project's page for more information about that.

tagged: tools code quality standards upgrade summary list

Link: https://www.tomasvotruba.cz/blog/2018/10/22/brief-history-of-tools-watching-and-changing-your-php-code/

Adnan Ahmed:
Modern Backend Developer in 2018
Apr 05, 2018 @ 12:55:05

On his Medium.com site, Adnan Ahmed has shared some of his thoughts about being a modern backend developer in 2018. In it he talks about the current state of backend development and makes some recommendations for those wanting to get started.

Web development today is completely different from what it was a few years ago; there are lots of different things that can easily baffle anyone entering into the web development. It was one of the reasons that we decided to make these step by step visual guides demonstrating the bigger picture and to give anyone a clear idea about what they have to follow to be in certain roles in web development.

The post starts with a large infographic showing the basic steps and some of the related technologies and concepts to go with them. Following this they break it down into more detail in a text form with summaries attached for each. There are a lot of topics in the list (24 of them) but here's some of the highlights:

  • Learn a Language
  • Learn a Package Manager
  • Standards and Best Practices
  • Security
  • ?Learn about the Relational [and NoSQL] Databases
  • Learning a Framework
  • Caching
  • RESTful APIs
  • Different Auth Methods
  • GraphQL [and Graph Databases]

His final recommendation is one that's good for beginners and veterans in the software development world alike: "keep exploring". If you stop learning and stop trying new things you'll stagnate in your own work and career. Challenge yourself to learn something new - a new language, tool or technique - as often as possible and apply it to your work.

tagged: modern backend developer 2018 summary steps recommendations

Link: https://medium.com/tech-tajawal/modern-backend-developer-in-2018-6b3f7b5f8b9

Romans Malinovskis:
Objectively comparing ORM / DAL libraries
Dec 21, 2017 @ 12:19:38

In a new post on his Medium.com site Romans Malinovskis has posted an objective comparison of ORM/DBAL libraries based on his own list. It includes several different libraries from all around the community including Doctrine, Eloquent, Cake ORM and Agile Data.

For many of us, developers, pattern of accessing external data (SQL) is a thing of preference. We get used to different syntaxes and subjectively endorse it. By looking past the individual preferences, I wanted to create a “comparison criteria” that would help PHP community to objectively evaluate data persistence frameworks based on features. As I looked around I haven’t found anything, so I started to work on my own list:

https://socialcompare.com/en/comparison/php-data-access-libraries-orm-activerecord-persistence. I welcome my readers to help me populate and use the table. In this article I explain various features which I’ve used as comparison criteria.

The (lengthy) post is divided up into sections for each of the criteria including:

  • Sections and Scope
  • Support of Persistence Engines
  • Criteria, Scope, Condition
  • Query Building
  • Single-record operations
  • Relations and References

...just to name a few. Each section comes with an explanation of what it is in a library-agnostic way and code examples where relevant. Be sure to check out both the table and the rest of the post for the full details.

tagged: compare orm dbal library chart criteria summary features

Link: https://medium.com/@romaninsh/objectively-comparing-orm-dal-libraries-e4f095de80b5

Nexmo Blog:
Laracon 2017 New York City – Conference report
Aug 23, 2017 @ 10:47:32

If you weren't able to make it to this year's Laracon US conference, the Nexmo blog has shared a summary of the event including some of their own highlights.

I recently attended Laracon in New York City for the 4th year in a row. This year the conference was held at New World Stages in Hell’s Kitchen, with 500 people in attendance (and a waiting list of over 1000!) making it the biggest one yet.

While the conference focuses on the Laravel PHP framework, the talks were diverse and covered topics like database segregation for multi-tenant applications, aesthetic and design tips for developers, advice on growing and scaling a side project into a business, and the importance of deep-focus work.

The author focuses on four of the talks that she found most useful:

  • "CRUDDY by Design" from Adam Wathan
  • "Custom Laravel" by Matt Stauffer
  • "Slay the Beast" from Jeffrey Way

The final talk was actually a keynote from Taylor Otwell himself covering the major changes that are coming in the 5.5 version of the framework including the Laravel Horizon queue management package. Each section comes with details of the session and links to other sources for more information.

tagged: laraconus17 conference wrapup summary event community laravel

Link: https://www.nexmo.com/blog/2017/08/15/laracon-2017-nyc-conference-report-dr/

Danny van Kooten:
Moving from PHP (Laravel) to Go
Apr 27, 2017 @ 10:14:04

Danny van Kooten has an interesting post on his site sharing his experience in converting a Laravel-based application to Go, briefly describing some of the changes made, performance differences and the lines of code required.

Earlier this year, I made an arguably bad business decision. I decided to rewrite the Laravel application powering Boxzilla in Go.

No regrets though.

Just a few weeks later I was deploying the Go application. Building it was the most fun I had in months, I learned a ton and the end result is a huge improvement over the old application. Better performance, easier deployments and higher test coverage.

He talks about why he selected Go and some of the external services he would need to interface with to make the transition complete. He then gets into the actual porting of the codebase and some of the challenges involved to replace Laravel functionality. With the application ported, he then compares the performance of the Laravel application versus the Go version, sharing the request of requests/second for each. He finishes out the post looking at a lines of code comparison between the two and how testing was handled on the Go side.

tagged: laravel move rewrite application go summary experience performance

Link: https://dannyvankooten.com/laravel-to-golang/

Sameer Borate:
New features in PHP 7.1
Feb 13, 2017 @ 10:57:45

The PHP 7.1.x releases are some of the latest versions of the language. There's plenty of new features that came along with this new release. In this new post to his CodeDiesel blog Sameer Borate looks at some of these new features (including code snippets to illustrate).

The PHP development team announced PHP 7.1.0 on 01 Dec 2016. This release is the first point release in the 7.x series. There are a few features – like the void return type – which have been introduced. Below are a few new selected features in PHP 7.1.

In the post he covers:

  • void functions (return type)
  • nullable types
  • symmetric array destructuring
  • class constant visibility

For each, code samples are provided and some of the benefits (and limitations) that come along with them.

tagged: feature php71 void nullable array class constant summary

Link: http://www.codediesel.com/php/new-features-in-php-7-1/

Arpatech.com:
9 Things You Should Need to Know About PHP 7
Jan 27, 2017 @ 11:20:50

The Arpatech.com blog has a new post sharing their list of top nine things to know about PHP 7 with some brief explanations for each. It's not an in-depth coverage of the features in this latest major release of the language but it does give a nice overview for those not familiar with what really changed.

If you are a web developer or a website owner, and you love to use CMS that are PHP-enabled like WordPress, Drupal, Joomla or PHP timetable, PHP 7 which was released on 3 December 2015, is now ready for the production use.

Yes you heard it right! PHP 7 is out to use. We are going to tell all the great things you need to know about PHP 7.

They've included several types of topics in their list, both code and performance related:

  • PHPNG, the New Core
  • Double the Speed
  • New Spaceship (<=>) and Null Coalescing (??) Operators
  • Enables Accurate Type Declarations
  • Imports from the Same Namespace

Each item on the list comes with a brief summary of what the improvement offers and, in the case of code-related items, a quick snippet showing it in action.

tagged: php7 top9 list major release features improvements summary

Link: http://www.arpatech.com/blog/9-best-things-you-should-know-about-php7/

SitePoint PHP Blog:
What Is Laravel Valet, and Why All the Fuss?
May 09, 2016 @ 13:29:09

The SitePoint PHP blog has posted an article adding to some of the others about the recently released Laravel Valet tool, providing an overview of the product and what it has to offer.

Valet is a tool which makes spinning up demo or discardable projects a breeze.

It’s a tool which combines some of the default software on OS X with some ideas about filepaths and serving of PHP apps, and some additional tools for skipping the need to modify the /etc/hosts file. Additionally, it allows for forwarding of access to the local application over the public internet when needed.

Unlike Vagrant or Docker It offers no isolation, making all apps use the same globally available software. Why this is important to note will be explained below.

The post then gets into some of "the particulars" the tool has to offer, essentially the "lock in" requirements:

  • OS X only
  • Shared system state (no VMs, only global)
  • Automatic virtual host
  • No dev / prod parity
  • Vendor-lock (with a caveat)
  • Live self-hosted preview

They point out that while Laravel Valet can be a handy tool if this is the tooling and setup you're looking for, it might not be for everyone.

tagged: laravel valet summary overview features requirements

Link: http://www.sitepoint.com/what-is-laravel-valet-and-why-all-the-fuss/

Jordi Boggiano:
Common files in PHP packages
Apr 21, 2016 @ 09:29:15

Jordi Boggiano has a new post to his site today sharing some interesting PHP package statistics he gathered as a part of the metadata in the Composer/Packagist ecosystem.

This one started in a peculiar way. Paul M. Jones announced a new version of his Producer tool, I had a look at it and saw that it recommended having a changelog called CHANGES.md by default. [...] My first thought was to report an issue asking to change the default, but then I thought it's Paul, he will not just take my word for it, he will want hard facts. So here I am two days later. I queried GitHub's API for the file listing (only the root directory) of all PHP packages listed on packagist.org. What this let me do is look at what files are commonly present (and not), which is quite interesting to get a picture of the whole ecosystem.

He queried about 79,000 packages and found some interesting patterns in the results. These included findings like:

  • 8% have a DependencyInjection/ directory, which I believe indicates Symfony bundles
  • 3.6% have a examples/ and 3.5% a docs/ directory
  • 49% have some file or directory indicating the presence of tests (phpunit.xml & co)
  • 14% have committed their composer.lock
  • 8% show a presence of some code quality/style CI (scrutinizer, codeclimate, styleci)

There's some other interesting statistics in the post around license files, changelogs and CLI binaries too. He's also posted the full data set for anyone interested in running some of their own statistics on the results.

tagged: package statistics packagist composer data results summary

Link: https://seld.be/notes/common-files-in-php-packages

Taha Shashtari:
A Gentle Introduction to Testing in PHP
Feb 02, 2016 @ 10:11:20

If you're not already doing testing (like unit testing) in your PHP-based applications but want to start, this new post on Taha Shashtari's site might just be for you. It provides a "gentle introduction" to unit testing, what it is and some of the tools you can use to get started.

Learning testing can be very overwhelming especially if you're just starting out. [...] You might have read a bunch of PHPUnit tutorials and maybe you tried to apply some of what you've learned in your projects, but it doesn't always feel right. And sometimes you get into situations where you have no clue how to test some feature in your application.

If anything of this happened to you, don't feel bad, we all have had this experience. And it's almost because of the way we learn it.

He starts by talking about some of the main goals of testing in your application and the difference between manual and automatic testing. He then gets into each of the three main testing types and follows it with links (and summaries) to tools you can use to get started testing. He ends the post with a brief look at test-driven development and, setting the stage for the next tutorial in the series, looks at the path ahead.

tagged: tdd definition basic introduction gentle testing unittest phpunit tools summary

Link: http://taha-sh.com/blog/a-gentle-introduction-to-testing-in-php