返回信息流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();
有必要请@暖洋洋吗?
这是一条镜像帖。来源:北邮人论坛 / www-technology / #38597同步于 2016/8/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
weird PHP 之 不完全函数式 之 函数变量赋值
panchao
2016/8/31镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
1. $func = Foo::func; // 访问了类常量,没有func常量,自然报错
2. $foo = func; // 同样访问了不存在的常量
* 回复不支持md吗? *
不懂PHP,但猜是不是少了个`$`什么的呢?要不然,如果变量名前面不加$,PHP怎么知道它是类名、方法名,而不是关键字?
还是Python大法好:
```python
class Foo:
@staticmethod
def bar(x):
print("Hello", x)
f = Foo()
func = f.bar
func("world")
```
另外,这个是否能解决问题呢?看样子PHP在用名字来查询方法。很让人吐槽的设计。 http://php.net/manual/en/functions.variable-functions.php
【 在 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 年出来的,而且一直在进化,但槽点还是很多