But the reason I used defined() was that I wanted to give a general solution. Someone might copy the code and change toto to something else that matches something that is false without reflecting on how it works. Or you might change it yourself later. Then you perhaps abstract the pattern, and suddenly you have a hard-to-trace bug. I always try to code so that I don't bite myself later on when I patch my code.