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

Attachment: pgpZYIgpKZE82.pgp
Description: PGP signature

Reply via email to