PHP Design by Contract provides a basic implementation of contract programming in PHP 5.3+. The base Contract class allows new or existing classes to define properties as protected Attributes and methods as Routines, which require argument type/class validation, aswell as PreCondition and PostCondition checks. Instances can also check for state consistency with an invariant check.