【发布时间】:2021-11-16 09:40:07
【问题描述】:
Class Layout
{
public function menu()
{
Foo::create('topMenu',function($menu){
$menu->logo($logolink);
$menu->color('blue');
});
}
}
Class Foo
{
public static function create(string $menu, Closure $callback)
{
}
}
Class Menu
{
public function logo(string $logo){}
public function color(string $color){}
}
如何使用匿名函数访问 Foo::create 方法内的 Menu 类的成员方法? $menu 作为菜单类的对象.. Core Php 中简单有效的方法。
已编辑: 我已经尝试过
public static function create(string $menu, Closure $callback)
{
return $callback(new Menu);
// or return reflection of closure
// $callback->call(new Builder,$menu);
// and then return..
}
但是如果不从 Foo::create 返回对象,它就不起作用 目前在职
Foo::create('topMenu',function($menu){
$menu->logo($logolink);
$menu->color('blue');
return $menu;
});
但需要..只有不返回 $menu
Foo::create('topMenu',function($menu){
$menu->logo($logolink);
$menu->color('blue');
});
或者喜欢...
Foo::create('topMenu',function(Menu $menu){
$menu->logo($logolink);
$menu->color('blue');
});
虽然我使用函数 (Menu $menu){} 我的 IDE 正常工作,但如果使用函数 ($menu){} 我的 IDE 无法在 Foo::crete() 中显示 $menu 中的 $methods;
我认为 IDE 问题只针对我这边,你这边也一样吗? phpstrom 2021.2.2
【问题讨论】:
-
啊,解决了,有些插件会导致这个..