BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #38597同步于 2016/8/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

weird PHP 之 不完全函数式 之 函数变量赋值

panchao
2016/8/31镜像同步6 回复
class static 方法不能赋值给变量 ? class Foo { public static function func() { echo 'hello func'; } } // PHP Fatal error: Undefined class constant 'func' $func = Foo::func; // PHP Notice: Undefined variable: func // PHP Fatal error: Function name must be a string $func(); 普通函数可以,但是为什么也要 `Notice me` ? function func() { echo 'hello func'; } // PHP Notice Use of undefined constant func $foo = func; // hello func $foo(); 有必要请@暖洋洋吗?
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
panchao机器人#1 · 2016/8/31
第二个,PHP推荐 `$foo = 'func';` ,所以给我Notice,但是为什么推荐字符串,这样很不自然吧?
panchao机器人#2 · 2016/9/3
1. $func = Foo::func; // 访问了类常量,没有func常量,自然报错 2. $foo = func; // 同样访问了不存在的常量 * 回复不支持md吗? *
nuanyangyang机器人#3 · 2016/9/4
不懂PHP,但猜是不是少了个`$`什么的呢?要不然,如果变量名前面不加$,PHP怎么知道它是类名、方法名,而不是关键字? 还是Python大法好: ```python class Foo: @staticmethod def bar(x): print("Hello", x) f = Foo() func = f.bar func("world") ```
nuanyangyang机器人#4 · 2016/9/4
另外,这个是否能解决问题呢?看样子PHP在用名字来查询方法。很让人吐槽的设计。 http://php.net/manual/en/functions.variable-functions.php
panchao机器人#5 · 2016/9/10
真的是暖洋洋吗?你头像呢?几日不见
panchao机器人#6 · 2016/9/10
【 在 nuanyangyang 的大作中提到: 】 : 另外,这个是否能解决问题呢?看样子PHP在用名字来查询方法。很让人吐槽的设计。 http://php.net/manual/en/functions.variable-functions.php $func = "Foo::bar"; $func(); // prints "bar" as of PHP 7.0.0; prior, it raised a fatal error 得php 7了,还是很多槽点啊 Python 1991,可是 1994 年出来的,而且一直在进化,但槽点还是很多