Hi Rasmus,
Thanks for the feedback, it is appreciated :-)
On 5/2/06, Rasmus Lerdorf <rasmus@lerdorf.com> wrote:
> Pierre wrote:
> > I put a small example here:
> > http://pecl.php.net/~pierre/filter_input_get_args_example.phps
> >
> > and the patch:
> > http://pecl.php.net/~pierre/patch_filter_input_get_args.txt
>
> I think this looks ok. I have been trying to come up with a shorter
> and cleaner syntax to specify these things, but so far I haven't come
> up with anything I really like. The closest I have come is something
> like this:
>
> $args = array(
> 'product_id' => 'Enc',
> 'component' => 'Int:Array:1-10',
> 'versions' => 'Enc',
> 'doesnotexist' => 'Int',
> 'testscalar' => 'Int:Scalar',
> 'testarray' => 'Int:Array'
> );
>
> But I am not completely happy with the magic shortcuts in the strings
> there.
I had the same problem, it is hard to make them shorter and still easy
to remember or as fast as constants. One of my idea was to create a
filter class, both for the functions
and the constants:
FILTER::TO_INT,FILTER::TO_ENCODED
filter::get() (input_get), filter::data() (filter_data,
filter::isset() (filter_has_variable),...
We gain a few chars and a bit of visibility. The :: separator makes the
real constant easier to read. See an example at the end of this mail:
$args = array(
'product_id' => FILTER::TO_ENCODED,
'component' => array('filter' => FILTER::TO_INT,
'flags' => FILTER::ARRAY,
'options' => array("min_range"=>1,
"max_range"=>10)
),
'versions' => FILTER::TO_ENCODED,
'doesnotexist' => FILTER::TO_INT,
'testscalar' => array(
'filter' => FILTER::TO_INT,
'flags' => FILTER::SCALAR,
),
'testarray' => array(
'filter' => FILTER::TO_INT,
'flags' =>FILTER::ARRAY,
)
);
I will then remove the duplicated code and clean the patch, add some
tests and commit.
What do you think to change input_get to behave like input_get_args?
invalid data uses false and not found NULL.
Cheers,
-- Pierre