A very warm welcome to you out there in the PHP community, and thank you for joining us :)
Did you know that almost half of the work force will look for a new job in 2018? Stats show that 1 in 5 people are already job hunting, with the tech industry geared for high growth.
If you are looking to recruit new staff, where better to advertise your job openings then on phpweekly.com? With a subscriber list of over 20,000, you could just find exactly who you are looking for.
Or if you want to entice new talent, or new business, to your business, how about sponsoring an edition of phpweekly.com? A stand out advert at the top of our page to catch the eyes of our 20,000+ subscribers within the PHP community.
For more information drop me a line at [email protected].
Have a great weekend,
Cheers
Katie and Ade |
Please help us by clicking to our sponsor:
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders. |
Articles
Paying Technical Debt - How To Rescue Legacy Code through Refactoring
How can you get a legacy codebase under control and bring it to a new level of maturity? This post summarises my advice and lessons learned from years of working on a large legacy web application.
The End of Silex
What about Silex in a Symfony 4 world? During the last few months, and as an exercise when working on Flex, I have migrated several applications from Silex to Symfony 4. And the conclusion is that Symfony 4 feels like using Silex.
Drupal 8 Content Migration: A Guide For Marketers
If you’re a marketer considering a move from Drupal 7 to Drupal 8, it’s important to understand the implications of content migration. You’ve worked hard to create a stable of content that speaks to your audience and achieves business goals, and it’s crucial that the migration of all this content does not disrupt your site’s user experience or alienate your visitors. Content migrations are, in all honesty, fickle, challenging, and labor-intensive. The code that’s produced for migration is used once and discarded; the documentation to support them is generally never seen again after they’re done. So what’s the value in doing it at all?
Become a Better Developer in 2018
Do you have any programming related New Year’s resolutions? A lot of people don’t follow through with their resolutions. But don’t let that discourage you. When you make resolutions, you are much more likely to achieve your goals (10x more). I wrote this post to show you how you can achieve your programming New Year’s resolutions.
10 Best WordPress Security Plugins to Lock Out the Bad Guys
Starting a blog, ecommerce website, or small business site requires an upfront investment for items for services and products like hosting, themes, plugins, and website development. That doesn’t include any help you must hire, such as customer service reps or salespeople. By default, WordPress core has some security measures in place, but it’s nothing compared to what a reputable security plugin does for you. Here are a few security features that Kinsta offers on all WordPress managed hosting plans.
The Case for a Great Developer Experience
For years I’ve advised everyone from solo developers to Fortune 50 companies on the best approaches to designing and building APIs in addition to numerous things to avoid. Ten years ago, it was impossible to convince anyone that great documentation was possible, let alone a requirement. Now an API company won’t launch without documentation under version control, SDKs for their favourite languages, and demo code. |
Tutorials and Talks
Laravel Model Caching
You’ve probably cached some model data in the controller before, but I am going to show you a Laravel model caching technique that’s a little more granular using Active Record models. This is a technique I originally learned about on RailsCasts.
Simple CQRS - Reduce Coupling, Allow The Model(s) To Evolve
CQRS has some reputation issues. Mainly, people will feel that it's too complicated to apply in their current projects. It will often be considered over-engineering. I think CQRS is simply misunderstood, which is the reason many people will not choose it as a design technique. One of the common misconceptions is that CQRS always goes together with event sourcing, which is indeed more costly and risky to implement.
Test Coverage: Integration Between CodeClimate and Travis CI
When you maintain an open-source project it is considered a good practice to have a high test coverage, so the community can feel safe about using your code in their projects. There are some services that can analyze your code quality and provide some feedback about it. One of the most popular is Code Climate. This service doesn’t run your tests, but you can use one of CI tools to run them and then send their result to Code Climate. This article will show how to use Travis CI to run your tests and CodeClimate to get your test coverage.
Deal with Memory Gently using “Yield” in PHP
Did you ever wonder “What is the benefit of having yield in PHP”, I will save you sometime googling; I have a list of points I want to introduce it to you in order to cover yield.
Passing Data to Layouts in Blade Through Extends
Laravel quick tip! The @extends Blade directive accepts a second (undocumented) parameter to pass data to the parent layout.
Unlocking the AWS WAF Logs
In this article we discuss our recent move to route all requests through CloudFront, allowing us to parse all traffic through the AWS Web Application Firewall (WAF). We highlight the reasoning behind this change, and some issues/remedies ecountered when trying to garner concrete logs from the WAF instance.
Documenting Composer Scripts
For open source projects I'm involved with, I developed the habit to define and document the steady growing amount of repository and build utilities via Composer scripts. Having Composer scripts available makes it trivial to define aliases or shortcuts for complex and hard to remember CLI calls. It also lowers the barrier for contributors to start using these tools while helping out with fixing bugs or providing new features. Finally they're also simplifying build scripts by stashing away complexity.
Observer Pattern: Object Oriented PHP
Design patterns itself, are repeatable solutions to commonly occurring problems in software design, one of which is observer pattern and usually applicable to an abstraction with two aspects such that a change in one object requires a change in one or multiple objects. If you are a frequent framework user like me, chances are high that you are already applying observer pattern in your code, be it observing a model or listening to certain actions.
Have You Tried Composer Scripts? You May Not need Phing
Phing is a great tool (I'm using it as well), but in this article, I want to show you that some projects may not need it. Composer contains a powerful feature called "Scripts", which can be used to create a simple build script.
How I Redesigned My Blog and Moved It From Jekyll to Laravel
One of my resolutions for 2017 was to redesign my blog. One week before the new year I faced myself with the challenge and thought to myself if this was still doable. Somehow I managed it and here it is. In this article I will explain the process and show you how I redesigned the blog with Tailwind CSS and moved it from Jekyll to Laravel with keeping almost the same performance.
Optimising colinodell/json5 With Blackfire
Back in November I released colinodell/json5 - a JSON5 parser for PHP. It's essentially a drop-in replacement for PHP's json_decode() function, but it allows things like comments, trailing commas, and more.
Sending and Receiving SMS Laravel Notifications with Nexmo
This is the first part of a series of tutorials by Michael Heap, covering how to build a multi-channel help desk system with Laravel. In this post, we’ll take a basic web based help desk system and extend it to send and receive SMS messages using the built-in Laravel notification system (which is powered by Nexmo).
New in Symfony 4.1: Prefix Imported Route Names
In Symfony 3.4 and 4.0 we added the possibility of prefixing the names of all the routes defined in a controller class with the name option in the main @Route annotation. In the following example, the route names will be blog_index and blog_post.
How To Send a "Trial Expiring Soon" Mail in Laravel Spark
I'm currently building a webapp named Oh Dear: an easy to use and beautiful website monitor. It has recently gone into it's beta phase. At the moment of writing everybody can register a new account. After you've registered you'll start your trial period of 10 days.
Encrypting Messages Using PHP and Remote Images
Images have been used to hide secret messages using a process called steganography. With modern computing power and software packages, it can be a simple process to locate and extract this 'secret' information. In this article we will look at a different approach to using remote images, as encryption keys that leave the image untouched and no longer detectable.
How To Move a Dependency to Composer While Requiring an Old Version
A common problem I run into with older applications are dependencies that have been added and loaded from the application’s repository. You would often see a “libraries” folder with a “className.php” type file. If you’re lucky you’ll have the entire folder of the dependency including the release notes to be able to find out exactly what version you’re using. Composer lets us easily move to this to our composer.json file by adding it to our require section.
Simple Eloquent Model Translations
Making your models translatable could be an issue, especially if you are running an application that is multilingual. For static texts, we can use the built-in translation engine, but for models, we need to solve a more complex issue. Let’s take a look at a simple yet flexible solution. |
News and Announcements
Laravel v5.5.29 Released
The first release of 2018 comes with a bunch of additions, changes and bug fixes.
New for January 2018
Welcome to 2018! Now that you've got your mantra for the year down, it's time to get to business. Symfony 4 business!
Automated Testing for PHP Training Course
I'm delighted to announce my new venture, PHP Training, with my friend Gary Hockin. As you can probably guess from the name, PHP Training is a training organisation where we provide public training courses on topics related to PHP.
PHP Benelux - 26-27th January 2018, Antwerp
We are excited to announce the date for PHPBenelux 2018. Like every year we will have a theme, for this year all activities will be sports themed; Relax while watching some games, join the fun or just be a good sport. The conference is spread over 2 days: Friday afternoon (after the tutorials) and Saturday. Tutorials as well as the conference itself are spread over several parallel tracks. On Friday and Saturday evening, we’re having the conference social. This will include drinks and all the cool side activities. The last few tickets are on sale now.
Midwest PHP Conference - 9-10th March 2018, Minnesota
Midwest PHP is the FUN conference. This is our fifth annual conference, and each year it gets better and better. Our goal is to share best practices, ideas, and techniques about building state-of-the-art software applications. Early Bird tickets are on sale now.
SymfonyLive Paris Conference - 29-30th March 2018
The French edition of the SymfonyLive conference will be entirely held in French. Tickets are on sale now.
php[tek] Conference - May 31st-June 1st 2018, Atlanta
php[tek] 2018 is the premier PHP conference and annual homecoming for the PHP Community. This conference will be our 13th annual, and php[architect] and One for All Events are excited to continue to host the event in Atlanta! Tickets will be on sale soon. |
Podcasts
MageTalk Podcast Classics – James Zetlen, Tony Brown and Brendan Falkowski
James Zetlen, Tony Brown of Space48 and Brendan Falkowski join us to talk Imagine 2017 announcements and frontend tooling as well as a possible future with PWAs.
PHP Roundtable Podcast: Extra, Extra: PHP 7.2 Released!
The next major version of PHP is here! PHP 7.2 comes with a nice set of upgrades, performance enhancements, and a brand new crypto library right out of the box. We discuss some of the features and breaking changes that we should be aware of before upgrading to PHP 7.2.
The Laracasts Snippets Episode 76: Immersion Is Key
It doesn't matter which new thing I want to learn, step one is always the same: immerse yourself.
PHP Ugly Podcast #90: We Melt Down
Topics include handling our kids exposure to the internet.
Full Stack Radio Podcast Episode 80: Tom Schlick - Building Multi-tenant Applications
In this episode, Adam talks to Tom Schlick about tackling challenges faced when building multi-tenant apps.
Free The Geek Podcast: Episode 31 - Talking Blockchain, Bitcoin, Cryptocurrencies, Ethereum, Privacy and Anonymity with Bruno Skvorc
In this episode, I have a very educational, informative, and entertaining chat with all-things cryptocurrency, Bitcoin, Litecoin, Ethereum, Mr Bruno Skvorc. I admit, I don't know a lot about the different technologies and terms. But that didn't stop Bruno sharing his wealth of knowledge and experience about them all with me - and so much more. Bruno shares how, at the beginning, he saw cryptocurrencies as pointless, but then Ethereum came along, with the promises of a world computer, and completely changed his perspective. He also talks about creating programmable money, how blockchain is building a decentralised internet that is resistant to censorship, slowdowns, and that despite all that revolutionary growth, it's still in its infancy. So grab your favourite beverage, put your feet up, and come hear from one very knowledgeable gentlemen. |
PHP Town Hall Podcast #56: GraphQL is Better Than REST
Amanda Folson and Ben Edmunds are joined by Phil Sturgeon to discuss what’s new in the world of API development. Make sure to check out his new book Talking To Other People’s APIs. Watch the video here.
Cloudways Interview - Alexey Silenko
Alexey Silenko shares his thoughts about Magento.
2017 - A PHP Year in Review
It's this time of the year again - the end of the year is coming up fast, so why not step back and take a look at what we, as a PHP community, have achieved this year? For these statistics, I used the free GitHub Archive data in combination with Google BigQuery, which lets you process 1TB of data per month free of charge. So let's take a look at some numbers.
Happy Seventeenth Birthday Drupal
Seventeen years ago today, I open-sourced the software behind Drop.org and released Drupal 1.0.0. When Drupal was first founded, Google was in its infancy, the mobile web didn't exist, and JavaScript was a very unpopular word among developers. |
Jobs
Do you have a position that you would like to fill? PHP Weekly is ideal for targeting developers and the cost is only $50/week for an advert. Please let me know if you are interested by emailing me at [email protected] |
Interesting Projects, Tools and Libraries
bunny
Performant pure-PHP AMQP (RabbitMQ) sync/async (ReactPHP) library.
last-wishes
Last Wishes is a PHP application written following Domain-Driven Design approach.
baconqrcode
BaconQrCode is a port of QR code portion of the ZXing library. It currently only features the encoder part, but could later receive the decoder part as well.
laravel-pjax
Pjax is a jQuery plugin that leverages ajax to speed up the loading time of your pages. It works by only fetching specific html fragments from the server, and client-side updating only happens on certain parts of the page.
spress
A static site generator built with Symfony components.
patchwork
Method redefinition (monkey-patching) functionality for PHP.
eloquent-sortable
This package provides a trait that adds sortable behaviour to an Eloquent model.
asset_compress
An asset compression plugin for CakePHP. Provides file concatenation and a flexible filter system for preprocessing and minification.
knapsack
Collection pipeline library for PHP.
verifyemail
PHP function to verify if the email is valid by connecting to the mail server and checking the result.
artax
Artax is an asynchronous HTTP client for PHP based on Amp. Its API simplifies standards-compliant HTTP resource traversal and RESTful web service consumption without obscuring the underlying protocol. The library manually implements HTTP over TCP sockets; as such it has no dependency on ext/curl.
ftp-deployment
A tool for automated deployment of web applications to an FTP server. |
Please help us by clicking to our sponsor:
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.
|
So, how did you like this issue?
|
|