Download the PHP package ciaranmcnulty/phpspec-typehintedmethods without Composer
On this page you can find all versions of the php package ciaranmcnulty/phpspec-typehintedmethods. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download ciaranmcnulty/phpspec-typehintedmethods
More information about ciaranmcnulty/phpspec-typehintedmethods
Files in ciaranmcnulty/phpspec-typehintedmethods
Package phpspec-typehintedmethods
Short Description Extension for phpspec to enhance generated methods
License MIT
Homepage http://github.com/ciaranmcnulty/phpspec-typehintedmethods
Informations about the package phpspec-typehintedmethods
PhpSpec Typehinted Methods Extension
Usage
PhpSpec by default will generate nonexistent methods, but will not add typehints. This extension enables that behaviour.
Write a phpspec example that uses a non-existent method:
And run the spec. After accepting the prompt, the following will appear in your class under specification:
Installation
Add this extension as a composer dependency:
Add the following to your phpspec.yml:
Who should use this?
There are pros and cons to this extension. It's written to satisfy a particular itch that I (Ciaran) had, because I tend to write examples like this:
In this case, because I've written my example thinking about the types I want foo to take, it's efficient for me to get a typehinted method.
However, some people write specs much more in an 'example' frame of mind, so might write something like this:
In this case the author is using an ArrayToken to illustrate the example, but would prefer the typehint to be TokenInterface. For this author, the typehinting will be irritating because they will have to keep editing the typehint.
This is the reason the functionality is not in core - we do not want to encourage authors to typehint against implementations (discussion at https://github.com/phpspec/phpspec/issues/230)
Todo
Future ideas:
-
Analysis/generation of
use
statements in target file to allow shorter typehints - Meta-analysis of examples to work out which parent class(es) could be used in typehint (?)