2017-03-12 13:58 GMT+05:00 Sherif Ramadan <[email protected]>:
> I think you're trying desperately to find a problem that is fitting of
the proposal
Checks in business logic are popular task.
> If the problem you're trying to solve pertains to object state that I
have no idea how this proposal hopes to achieve that. You can readily
control object state in PHP without the need for declarative types (e.g.
magic getters/setters)
I described in first message the way how the proposal can help with this.
There is no magic getters/setters there.
> Not seeing how this proposal improves or even achieves such a thing.
Now we need to write in business logic the following:
function checkout(Order $order)
{
if (count($order->products) > 0) {
throw new SomeException1();
}
if ($order->date === null) {
throw new SomeException2();
}
if ($order->address === null) {
throw new SomeException3();
}
// checkout steps
...
someActionWithOrderForCheckout($order);
...
}
function someActionWithOrderForCheckout(Order $order)
{
if (count($order->products) > 0) {
...
}
if ()
...
}
Of course, we can move all checks to some function like
'ensureOrderIsReadyForCheckout()' and call it everywhere manually.
But this is the same as call is_integer() manually instead of type hinting.