roave/dont (packagist): A small set of traits that can be used to prevent misuse of your objects
Keywords: defensive programming|strictness