Custom selectors are datatypes that implement Phing\Type\Selector\FileSelector.
There is only one method required,
public function isSelected(PhingFile $basedir, string $filename, PhingFile $file): bool.
It returns true or false depending on whether the given file should be selected or not.
An example of a custom selection that selects filenames ending in .php would be:
class PhpSelector implements FileSelector
{
public function isSelected(PhingFile $b, string $filename, PhingFile $f)
{
return StringHelper::endsWith('.php', strtolower($filename));
}
}
Adding the selector to the system is achieved as follows:
<typedef
name="phpselector"
classname="PhpSelector"/>
This selector can now be used wherever a Core Phing selector is used, for example:
<copy todir="to">
<fileset dir="src">
<phpselector/>
</fileset>
</copy>