thePHP.cc Logo Deutsch Contact
Article O Brother, where art thou?

O Brother, where art thou?

Why do individual changes not bring the desired success?

Article Domain-Driven Design with PHP

Domain-Driven Design with PHP

More focus on the domain: You should know and be able to apply these design patterns from Domain-Driven Design.

Article PHP 7: Security Support Ends. Now what?

PHP 7: Security Support Ends. Now what?

Security support for PHP 7 has ended. What does this mean for you?

Article Why I manage test fixture differently

Why I manage test fixture differently

Sebastian Bergmann ponders why he no longer writes setUp() methods.

Article How do you name constructors?

How do you name constructors?

PHP does not support constructor overloading. Named constructors provide a remedy. But what is the best way to name them?

Article Ready Or Not, Here It Comes

Ready Or Not, Here It Comes

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

Article Ready, Preload, Go

Ready, Preload, Go

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

Article Ketchup or Mayo?

Ketchup or Mayo?

A French fries stand offers a few dishes and drinks. That means founding can't be particularly difficult, can it?

Article Athletes and Software Development

Athletes and Software Development

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

Article Do not mock what you do not own

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 Happy 25th Anniversary, PHP!

Happy 25th Anniversary, PHP!

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

Article Caching makes everything faster. Right?

Caching makes everything faster. Right?

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

Article Unfortunately we have no framework

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 Developer wanted, maintainer found?

Developer wanted, maintainer found?

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

Article Failing IT Projects

Failing IT Projects

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

Article Saved to be ruined

Saved to be ruined

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

Article Who wound the clock?

Who wound the clock?

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

Article High-Resolution Monotonic Timer

High-Resolution Monotonic Timer

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

Article Goodbye, IT Conference

Goodbye, IT Conference

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

Article Improve Your Design with CQRS

Improve Your Design with CQRS

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

Article Automating Edge Cases

Automating Edge Cases

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

Article PHPUnit: A Security Risk?

PHPUnit: A Security Risk?

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

Article Migrating to PHPUnit 9

Migrating to PHPUnit 9

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

Article Help! My tests stopped working

Help! My tests stopped working

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

Article Blast from the Past

Blast from the Past

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

Article Who pays for PHP?

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 Faster Code Coverage

Faster Code Coverage

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

Article The Future of Zend

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 Indirect Invocation Considered Harmful

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 Putting PHP 8 on the Roadmap

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 Why Magic Quotes are gone in PHP 7

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 Microservices for Lunch

Microservices for Lunch

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

Article Conferences: for Fun or Profit?

Conferences: for Fun or Profit?

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

Article Don't call instance methods statically

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 Why Developers Should Not Code

Why Developers Should Not Code

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

Article Testing Keeps Me From Getting Things Done

Testing Keeps Me From Getting Things Done

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

Article The Death Star Version Constraint

The Death Star Version Constraint

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

Article Refactoring to PHP 7

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 PHP 5: Active Support Ends. Now what?

PHP 5: Active Support Ends. Now what?

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

Article Typed Arrays in PHP

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 Questioning PHPUnit Best Practices

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 How to Validate Data

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 On Hackathons

On Hackathons

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

Article Dependencies in Disguise

Dependencies in Disguise

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

Article 20 Years of PHP

20 Years of PHP

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

Article 20 Years of PHP

20 Years of PHP

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

Article 20 Years of PHP

20 Years of PHP

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

Article Driving Change

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 PHP Breaks Backwards Compatibility

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 Joomla PHPUnit Code Sprint

Joomla PHPUnit Code Sprint

Sebastian supported the Joomla project in their testing effort.

Article TYPO3 PHPUnit Code Sprint

TYPO3 PHPUnit Code Sprint

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

Article Disintegration Testing

Disintegration Testing

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

Article Continuous Integration

Continuous Integration

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

Article Man Is What He Eats

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

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 Integration Testing

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 Trust Me: Our Adservers Are Secure

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 Urban Legends and Error Handling

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 Day-to-Day Fraud Detection

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 Trust

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 Level Crossings and Traffic Jams

Level Crossings and Traffic Jams

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

Article Physical Security Fail

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 Software Development Fluxx

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 Data, Persistence, and My Frying Pan

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 Do not enter!

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 When it gets hot

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 Soccer Lessons for Project Managers

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 Spaces or Tabs?

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 Do you have our loyalty card?

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 Sixty Percent Quality

Sixty Percent Quality

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

Article Seeing the Bigger Picture

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 Assumptions

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.