We’re at this year’s precipice, and it couldn’t have been a better one. How about we make it even better for some packages and libraries in dire need of contributors and stars? This Xmas, let’s give the gift of open source prestige!
frickelbruder/kickoff [24 ★]
KickOff is a continuous website monitoring tool.
On single-launch, it’ll use a configuration file to check for some common requirements in regards to SEO and performance, like title length, valid redirects, and so on.
The caveat is that such things can only be checked for after a site has already been deployed, so while it is possible to integrate KickOff into your typical continuous deployment pipeline, it’ll require some trickery if you want it integrated with zero downtime.
Since it’s after-deployment, this means a build failing the KickOff test will go live before errors can be detected to stop it. Since the KickOff command returns the number of errors (apart from generating a JUnit report compatible with PHPUnit’s), you can:
- set up a “test” subdomain for your project, run your test on that, and propagate to production only after KickOff returns 0 errors on the test site
- create a rollback script in your CD pipeline which returns the page to the previous version if KickOff returns an error number above 0
The former is definitely the more user friendly approach.
KickOff has failed to kick off properly, so we’re hoping we’ll give it some followers and contributors by mentioning it here – it’s definitely an interesting and useful tool.
mpociot/botman [881 ★]
Botman has, since I saw it posted on Reddit, exploded in popularity, but this doesn’t mean it doesn’t deserve another shout out.
It’s a “framework agnostic PHP library” for “developing innovative bots” for multiple platforms – including but not limited to Slack, Messenger, etc.
It’s very mature and stable, with few unsolved issues, and comes with a plethora of instructions for integrating it into anything from Laravel to your own homegrown spaghetti PHP app.
An in depth look at Botman is coming early next year, but in the meanwhile, feel free to give a look and let us know what you think. If you’ve used it to build anything yet, do give us a shout – we’d love to publish a post about it.
PHPOffice/PhpSpreadsheet [401 ★]
PhpSpreadsheet is the newest addition to the PHPOffice family – this time intended as a full replacement of the somewhat outdated PHPExcel.
Adopting best practices, modern PHP, and newfound design principles, Mark Baker decided it was time to start from scratch and just deprecate PHPExcel, rather than go the Sisyphus and try updating it.
The result is a phenomenal new library that easy and pleasant to use – something would would never expect to say about anything spreadsheet related.
The project is, while popular, not yet stable, so if you have some time on your hands and nothing to do over the holidays, PhpSpreadsheet has some missing features to gain before getting its first release (all documented in the project’s README). Now’s your chance to make a mark on a package that’s guaranteed to have hundreds of thousands of users.
cweiske/phinde [10 ★]
Phinde is a self-hosted search engine for your website – including static blogs if you have them. Its full explanation and context can be found here.
Phinde uses Elasticsearch to achieve its speed and accuracy, and Gearman behind the scenes to run regular updates and crawls of the target domains and sites. This means your index is automatically rebuilt when needed, and your search is always fast, effective, and available. What’s more, the search engine can be hosted on its own server – completely separate from the app it’s searching – so you can easily add it to other sites with widgets. For example, you can add your blog’s search field onto your personal blog, your company website, and into a mobile app – it’s all just an API call away.
Phinde currently uses Bootstrap to layout the search and results page, but this is easily changed to something more modern or prettier.
With very few stars, we think Phinde deserves much more attention – if only for the much needed upgrades in features and styles – and there’s also an opportunity to contribute to documentation if that’s more up your alley – the Setup Procedure section is empty and in dire need of attention.
phpstan/phpstan [461 ★]
Submitted by @MartinHujer, PHPStan is a static analysis tool for PHP code. It runs through code before you execute it, and checks for syntax errors like these:
- Existence of classes and interfaces in instanceof, catch, typehints, other language constructs and even annotations. PHP does not do this and just stays silent instead.
- Existence of variables while respecting scopes of branches and loops.
- Existence and visibility of called methods and functions.
- Existence and visibility of accessed properties.
- Correct types assigned to properties.
- Correct number of parameters passed to constructors, methods and functions.
- Correct types returned from methods and functions.
- Correct number of parameters passed to sprintf/printf calls based on format strings.
There’s an in depth look at the tool here.
It supports rules, exclusions, different and custom types of errors you can define, and more – and is easy to integrate in your continuous testing pipeline.
For more information please see the README, or one of the open issues.
amphp/aerys [572 ★]
Aerys, submitted by Markus Staab, is
“A non-blocking HTTP application, WebSocket and file server.”
Sounds powerful, no? Indeed, like something a PHP game could use.
We have mentioned amphp before, but we’ve yet to cover aerys to a meaningful degree. Aerys is in fact a PHP server that’s ready for use, if you don’t mind the “non-stable” tags.
It’s attracted a large following already, but few seem willing to contribute so why not change that? The authors are actively looking for help (see README), in particular with open issues and battle testing the tool so it can be released as stable, and unleashed on the world in all its glory.
It’s been a great year, everyone. We’ve seen unprecedented traffic growth, and that only lets us publish more interesting more awesome content.
We couldn’t have done it without you, and we still can’t, so we’re asking – what do you want to see more of at SitePoint? In depth tutorials? Framework specific articles? Reviews of programming books? Maybe dissections and explanations of popular open source PHP projects? Anything goes! Just let us know in the comments how we did, and what you’d like us to publish.
Don’t forget, we’re always on the lookout for new authors, too, so if you’re interested in sharing some knowledge and earning cash on the side, get in touch!
That’s it for this month (and year!) – it’s been a blast! Remember – you can easily let me know about some huntable projects by using the #sourcehunt Twitter hashtag!
See you on the other side, happy holidays!
PHP Authorization with JWT (JSON Web Tokens)
By Miguel Ibarra Romero, Matthew Setter,
Need to authenticate requests to a server? Learn what JWTs are and how to use them instead of sessions to authenticate your users via API calls.
Setting Up a Modern PHP Development Environment with Docker
By Tom Butler,
There are so many ways to set up your PHP development environment, but using Docker is the current best practice. Let's walk through how to do it properly.
Getting Started with Laravel Livewire
By Wern Ancheta,
Bruno is a blockchain developer and technical educator at the Web3 Foundation, the foundation that's building the next generation of the free people's internet. He runs two newsletters you should subscribe to if you're interested in Web3.0: Dot Leap covers ecosystem and tech development of Web3, and NFT Review covers the evolution of the non-fungible token (digital collectibles) ecosystem inside this emerging new web. His current passion project is RMRK.app, the most advanced NFT system in the world, which allows NFTs to own other NFTs, NFTs to react to emotion, NFTs to be governed democratically, and NFTs to be multiple things at once.