I'm sorry I don't see how this even compares to that. The function of this is to wrap methods so that they always return a reference to the object. The Class::Null make an object that handles all method calls gracefully. I don't see how the two are related other than they pertain to method chaining, however they deal with different parts, this wraps the method call to force it to chain, that wraps it to handle error cases. The two could be combined to supply some extra method chaining sugar though.