einstein/open_struct (packagist): Data structure that allows the definition of arbitrary methods and properties at runtime
Keywords: modules|traits|overloading|mixins|struct