On Monday 13 November 2006 04:42, Mathias Bank wrote: > Hallo, > > you know, that there was often a discussion about a "ifsetor" > function. I want to generalize this discussion. If you know LISP, > there is a fantastic macro function which allows you to generate own > syntax (not a c macro function, which is really bad). It would be > fantastic, if php could implement such a macro function. One example > (for ifsetor): you could define > > macro ifsetor($param1, $param2) { > return "if (isset($param1)) return $param1; else return $param2; > } > > use: $test = ifsetor($_GET["blubb"],null); > > All you have to do is to not execute the parameters given in the > macro parameter list. Instead, you have to evaluate the return > statement and then to execute this statement. > > In this way, all discussions about ifsetor (or anything like this) > could be avoided. > > The macro function could even be extended to allow new blocks, but > then we have to extend the syntax to allow reference to the body. In > this way, I always extend the syntax of the parameter data: only > variables would be matched. > > macro foreachkey($array as $key, :body $body) { > return "foreach ($array as $key=>$__dev0) { > $body > }"; > } > > know, you can call > $secondArray = array(); > foreachkey($myArray as $myKey) { > $secondArray[] = $myKey; > } > > this would be extended to > foreach ($myArray as $myKey=>$__dev0) { > $secondArray[] = $myKey; > } > > and this code will be executed. > > As you see, with this macro functions, it could be achieved any > individual syntax. It would be a pleasure, if php could support it. > It could shorten a lot of code. > > Mathias This could also help with writing code compatible across different major PHP versions (4, 5, and 6). It could help fuel upgrades so that supporting PHP4 isn't such a hassle in the future.
I love the idea (especially the Lisp implementation). -- Matt Sicker
pgpZYIgpKZE82.pgp
Description: PGP signature