On 25 Aug 2010, at 19:04, Adam Lassek wrote:

> Okay, that's what I needed to know. So this convention is limited to
> encoding nesting relationships for Hashes, denoting Array values, and
> it apparently originated from PHP. Still looking for the proper term
> for this convention, but that's good enough for now.

The concept of parsing parameters into a 'deep hash' based on field names in 
square brackets was already present in the initial commit of Rails:

http://github.com/rails/rails/blob/db045dbbf60b53dbe013ef25554fd013baf88134/actionpack/lib/action_controller/cgi_ext/cgi_methods.rb#L32

As mentioned earlier, Rack adopted this convention from Rails before its 1.0 
release:

http://groups.google.com/group/rack-devel/browse_thread/thread/732e2c1e014bde30/4ee0135df7767f17

In this context of Rack, the common term for this seems to be 'nested parameter 
parsing'.

The suggestion that the idea comes from PHP is probably correct, given that DHH 
was working in PHP before starting Rails. PHP parses parameters with names like 
person[address][city] into PHP's equivalent of nested hashes, multidimensional 
associative arrays, and in that community the concept seems to go by some 
variation of 'GET/POST multi-dimensional parameters'.

As a bit of history, this deep hashing was added for PHP 4.0 beta 3 back in 
1999:

http://svn.php.net/viewvc?view=revision&revision=12991

in response to this bug:

http://bugs.php.net/bug.php?id=279

But the basic idea of using 'foo[bar]' and 'foo[]' as parameter names in order 
to get a single-level associative or indexed array seems to have been around 
from at least as far back as PHP 2 in 1996:

http://svn.php.net/viewvc/archived/phpfi/trunk/src/type.c?view=markup&pathrev=2#l47

where it's included with little fanfare and no specific name. No idea if this 
was in turn lifted from somewhere else -- if anywhere, it'd most likely be from 
Perl CGI conventions from around that period.

Chris

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to