Mathias Bank schrieb:
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
I have recieved a few mails which have shown, that some people
misunderstood my idea. It seems, that most of you know c/c++ macros. But
I don't want to implement these macro functionality, because this
functionality is really poor. Have a look at the macro functionality of
lisp:
http://www.gigamonkeys.com/book/macros-standard-control-constructs.html
and http://www.gigamonkeys.com/book/macros-defining-your-own.html.
There, it is described, what macros in lisp can do. You will see, that
such macros cannot be compared with c/c++ macros. But it would be a
pleasure for php, if such macros would be possible. You should really
read it, I couldn't believe it until I have realized it at my own.
PHP is a really great language and the syntax is much better than the
syntax of lisp. But the macros are one big pleasure in lisp. And don't
mistake lisp macros for c macros. They are much more powerful.
Mathias
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php