I have seen that in php there isn't nothing similar to dictionary
substitution in python.
(a dictionary is an array with string keys, like hash in perl)

This change consist in adding two functions ("a" stay for "array"):
aprintf(string format, array dict) -- like printf, print the result
saprintf(string format, array dict) -- like sprintf, return the result

It works like this (written in php-like language):

format -> "my name is %(name)s and i'm %(age)s"
dict -> array( name=>"tom", age=> "eighteen" );

(in php, unlike python, is possible to make an array with both string and
number indices, so the format can be also %(2)s,...)

aprintf(format,dict) -- print "my name is tom and i'm eighteen"
saprintf(format,dict) -- return "my name is tom and i'm eighteen"

in python, these substitutions are very useful, especially in cgi
programming, for making templates from text files, in php could be
useful in, for example, language customisation, or message formatting,
etc...

An example:
if ($lang == "it")
  define("MESSAGE","il %(animal)s %(color)s sta %(action)s %(target)s");
else
  define("MESSAGE","the %(color)s %(animal)s is %(action)s");

aprintf(MESSAGE,array(animal=>"cobra",color=>"green",action=>"eating",target
=>"mouse"));
// if the %(target)s isn't found, is ignored.


(the "s" terminator could be substituted with other letters, like d for
numbers, etc...)

This approach has several advantages over something like this:
"the $color $animal is $action"
because in this phrase, variables are substituted when the parser execute
it, and in this case:
"the %(color)s %(animal)s is %(action)s"
parameters are substituted only when the phrase is parsed with a specialized
function like aprintf



I think that this is a good idea and could save a lot of time when the
program need to be as modular as possible.

----------------
Federico Marani
[EMAIL PROTECTED]
----------------




-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to