Article

Ready Or Not, Here It Comes

Is your software ready for PHP 8.1? Now is the time to find out.

Article

Physical Security Fail

Arne Blankerts uses the physical security of appartments (and a recent burglary at his own appartment) as a metaphor to explain the hardening of PHP system architectures.

Article

Microservices for Lunch

Getting the decomposition right is a crucial success factor for microservice architectures. Here is why.

Article

Indirect Invocation Considered Harmful

There is a bug in PHP that allows bypassing type safety checks. You would not do that, though, would you?

Article

Joomla PHPUnit Code Sprint

Sebastian supported the Joomla project in their testing effort.

Article

Happy 25th Anniversary, PHP!

Happy 25th anniversary, PHP. Your birthday present arrived just in time.

Article

Improve your Design with CQRS

Getters read and setters write. What happens when you apply this idea to the architecture of an application?

Article

Do not mock what you do not own

Programming is all about abstraction. But there is a big difference between owning an abstraction and using somebody else's.

Article

TYPO3 PHPUnit Code Sprint

Sebastian Bergmann participated in a code sprint to make the PHPUnit TYPO3 extension better.

Article

Migrating to PHPUnit 9

Sebastian Bergmann provides guidance on how to migrate from PHPUnit 8 to PHPUnit 9.

Article

Why Magic Quotes are gone in PHP 7

With the release of PHP 7, some features that were traditionally widely used have been removed from the language. We explain why magic quotes have been removed from PHP, and how to deal with this when getting ready to migrate to PHP 7.

Article

The Future of Zend

Some pivotal persons have announced that they are going to leave Rogue Wave. Is the future of PHP at stake?

Article

Level Crossings and Traffic Jams

Stefan Priebsch uses the traffic planning of a small city as a metaphor to discuss experiment-driven development.

Article

20 Years of PHP

Sebastian Bergmann recollects how he first came into contact with PHP.

Article

PHPUnit: A Security Risk?

Sebastian Bergmann explains why PHPUnit must not be installed on a webserver.

Article

The Death Star Version Constraint

Sebastian Bergmann explains why using a too wide version constraint may cause trouble.

Article

Assumptions

Our world is based on assumptions. It may not always be obvious, but the majority of decisions you and I make every day, the very core of our interactions are almost always based on assumptions.

Article

Questioning PHPUnit Best Practices

Best practices are not set in stone and need to be questioned and then adapted, if need be, every once in a while.

Article

Saved to be ruined

Arne Blankerts explains why you should keep your dependencies up-to-date.

Article

Man Is What He Eats

Sebastian Bergmann uses the staff of a professional kitchen as a metaphor for a development team that wants to deliver high-quality software.

Article

Educating Children

Stefan Priebsch, father of three-year-old twins, shares some parental insights while he explains what we can learn about software development from watching children grow up.

Article

Do not enter!

Arne Blankerts uses traffic laws as a metaphor to explain the difference between just having rules for security and actually enforcing them.

Article

Dependencies in Disguise

Passing around a service locator is a bad practice. But how can it be avoided?

Article

Unfortunately we have no framework

A framework of your own, or better a standard solution? We approach the question by looking at the history of PHP frameworks.

Article

Automating Edge Cases

The coronavirus pandemic keeps pushing the boundaries of what we consider "edge cases". This leads to interesting IT problems.

Article

20 Years of PHP

Arne Blankerts recollects how he first came into contact with PHP.

Article

Developer wanted, maintainer found?

It is very difficult to find good developers. Ever tried to look for a maintainer instead?

Article

Urban Legends and Error Handling

We have all heard those stories that begin with "I know somebody" or "I have heard of somebody" before. Are they true, or just an urban legend?

Article

Blast from the Past

Honestly, we did not expect to ever write about PEAR again. Yet here we are.

Article

Ready, Preload, Go

Preloading can significantly improve performance. Let's see how it works.

Article

Putting PHP 8 on the Roadmap

Some problematic PHP features are scheduled for removal in PHP 8. If you are dealing with Unicode strings, you may need to act now.

Article

PHP Breaks Backwards Compatibility

For a major release such as PHP 7, some backwards compatibility breaks are expected to happen. Breaks like these are always a double-edged sword.

Article

20 Years of PHP

Stefan Priebsch recollects how he first came into contact with PHP.

Article

Refactoring to PHP 7

How do you adapt an existing codebase to PHP 7, and what are the benefits? Our friend Tim talks about his experiences when getting an e-commerce platform ready for PHP 7.

Article

Integration Testing

Integration testing bridges the gap between unit testing and system testing by focusing on the interfaces between components and ensuring that their interaction works as expected.

Article

How to Validate Data

Validating data seems to be one of the most important tasks of an application. After all, you cannot trust data from external sources.

Article

Faster Code Coverage

Sebastian Bergmann and Sebastian Heuer share how they made PHPUnit's code coverage functionality faster.

Article

Trust Me: Our Adservers Are Secure

Online adverts aren't just annoying: They open up a number of technical issues too, says thePHP.cc's security expert.

Article

Driving Change

You are not entirely happy with how things go in your team or organisation? There is a simple way to start driving change.

Article

Seeing the Bigger Picture

Mankind has been constructing buildings for over 5000 years. The Great Pyramid of Giza for example, undoubtedly a masterpiece of architecture and engineering, has been built around 2600 BC.

Article

Spaces or Tabs?

Developers are nice people. Just remember to never ask a group of developers which operating system is the best, or whether spaces or tabs should be used for indentation.

Article

Who pays for PHP?

With no formal backing by any company or non-profit organisation, who pays for the development and maintenance of PHP - and how?

Article

Help! My tests stopped working

Sebastian Bergmann provides guidance on how to avoid frustration when upgrading to a new major version of PHPUnit.

Article

On Hackathons

Hackathons are fun and very educational. But do they teach the right values?

Article

Conferences: for Fun or Profit?

How much money conference speakers in the PHP community actually make.

Article

Sixty Percent Quality

Sebastian Bergmann uses hotel ratings as a metaphor to explain quality goals for software projects.

Article

Data, Persistence, and My Frying Pan

Stefan Priebsch uses his frying pan as a metaphor to explain the difference between relational and non-relational databases.

Article

Who wound the clock?

Sebastian Bergmann explains why PHPUnit no longer looks at the clock.

Article

Athletes and Software Development

Do you know the difference between software developers and professional athletes?

Article

Day-to-Day Fraud Detection

Looking at how credit cards are used in everyday life, it's amazing that such an inherently insecure system survived as it is violating almost every rule there is in terms of security.

Article

Software Development Fluxx

Sebastian Bergmann uses the card game Star Fluxx as a metaphor to discuss agile software development, object-oriented design, and quality assurance.

Article

Don't call instance methods statically

In PHP 7, instance methods cannot be called statically any more. We explain how to deal with this.

Article

Continuous Integration

At what project size is continuous integration worthwhile in PHP projects?

Article

When it gets hot

Sebastian Bergmann uses the air conditioning system of Germany's InterCity Express (ICE) trains to explain service-level agreements that product owner and developers negotiate for quality goals such as scalability and performance.

Article

Trust

Sebastian Bergmann uses a car driver's blind trust in a navigation unit as a metaphor to discuss how quality goals define the architecture of an application.

Article

Why Developers Should Not Code

A surprising answer to the question why program code is so hard to understand.

Article

Caching makes everything faster. Right?

Sebastian Bergmann takes a look at an interesting problem that came up while working on PHPUnit.

Article

Goodbye, IT Conference

With the coronavirus pandemic raging, the future of IT conferences is at stake. Or is it?

Article

Soccer Lessons for Project Managers

Stefan Priebsch uses soccer as a metaphor to explore how projects can be managed in such a way that you are prepared for the obstacles that you are likely to run into.

Article

Failing IT Projects

Sebastian Bergmann explains how you can learn from failed IT projects.

Article

PHP 5: Active Support Ends. Now what?

Active support for PHP 5 has ended. What does this mean for you?

Article

High-Resolution Monotonic Timer

We explain why looking at the clock may not be a good idea when you want to measure time.

Article

Disintegration Testing

Sebastian Bergmann uses NASA's Mars Climate Orbiter as a hook to discuss different scopes of testing.

Article

Typed Arrays in PHP

As a community, we can only make progress when somebody pushes the boundaries. This can be done by questioning established best practices, or by coming up with new ideas.

Article

Do you have our loyalty card?

Do you collect miles? Are you a member of our saver's club? What's your frequent flyer number? Is it just me or is it getting really annoying that every time you shop you get asked for it.

Article

Testing Keeps Me From Getting Things Done

Writing unit tests takes time. Is it really worth the effort?