1. PHP 5.6+
3. No more IE 10
4. REST API
"It took me 4 hours to find this stupid bug."
"I'm... not even sure how this function works anymore."
"How did it even get that value!? That shouldn't be possible!"
"So where should I make this thing? Is here fine?"
Someone else already had that problem and, yes, they already solved it.
Each Value Object instance should represent a single (scalar) value.
Store everything you need to make your value meaningful.
Protect the value’s integrity.
Don't use them.
Alain Schlesser has a great article on this with many well laid out alternatives:
Let the factory manage the conditions of the object creation.
Don’t mix creation with implementation.