首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在php中创建循环模板

如何在php中创建循环模板
EN

Stack Overflow用户
提问于 2011-05-29 00:59:51
回答 3查看 5.8K关注 0票数 16

因为我们可以在C++中定义循环模板,以使代码更短:

代码语言:javascript
复制
#define fo(a,b,c) for( a = ( b ); a < ( c ); ++ a )

有没有办法在PHP中做同样的事情?

EN

回答 3

Stack Overflow用户

发布于 2011-05-29 01:08:48

谢天谢地不是。有很多可怕的事情可以让PHP变得不可读,但这不是其中之一。

默认情况下,PHP不使用预处理器。作为一种动态语言,没有一个构建步骤可以让它作为运行的一部分。您可以使用像CCPP这样的第三方预处理器,当然,您也可以编写自己的预处理器,但它们可能会极大地改变您的工作流。

PHP的一个有趣的预处理器是PiHiPi,它试图向语言中添加有用的特性,比如数组语法,而不是每次都需要编写array()。不幸的是,作者把它拉出来了。

票数 12
EN

Stack Overflow用户

发布于 2011-05-29 01:20:24

不如这样吧:

代码语言:javascript
复制
function my_macro($a, $b, $c) {
  $args = func_get_args();
  array_shift($args);
  array_shift($args);
  array_shift($args);

  return call_user_func_array("something_horrifically_long_involving_{$a}_{$b}_and_{$c}", $args);
}
票数 1
EN

Stack Overflow用户

发布于 2014-12-31 09:18:19

CCPP似乎是可用的最接近的东西:

代码语言:javascript
复制
#define macroFunction(op1,op2,op3) ((int)op1/((int)op2+(int)op3))
#define hash_hash # ## #
#define showCExamples 1

#if showCExamples
//Reference: http://en.wikipedia.org/wiki/C_preprocessor#Token_concatenation
#define MYCASE(item,id) \
case id: \
  item##_##id = id;\
break

switch(x) {
    MYCASE(widget,23);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6163053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档