Created
October 30, 2012 17:14
-
-
Save mvriel/3981617 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Class IpRange | |
{ | |
public function setStartingAddress($startingAddress) | |
{ | |
InputValidator::assertValidAddress($startingAddress); | |
$this->startingAddress = (int) $startingAddress; | |
return $this; | |
} | |
} |
Let's say I ditch the "staticness" of the InputValidator class... without dependency injection, how would I be able to check if the method was invoked?
That depends on how you make your validation methods visible; when using extension you can Stub your fixture as shown in the previous example. As a trait? You can't. Traits are effectively global state as well. SOLID has Dependency Inversion as a principle because it allows for things like testability.
Extension is not an option in my case, given multiple inheritance is (unfortunately) not a language feature of PHP.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I don't see how a trait would make any difference; a trait adds the same testing issues as a static, global function, singleton or any other piece of global state