访问 Class 方法并 Php 关闭正确
Access Class Method with Php Closure properway
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){}
}
如何使用annonymus 函数访问Class 内部Foo::create 方法的成员方法?
$menu 作为菜单的对象 Class..
核心 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..
}
但如果不是 returning 来自 Foo::create 的对象,它就不起作用
目前工作
Foo::create('topMenu',function($menu){
$menu->logo($logolink);
$menu->color('blue');
return $menu;
});
但需要..只有没有 return $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 无法从 $menu 中显示 $methods inside Foo::crete();
我认为 IDE 问题只针对我这边,你这边也一样吗?
phpstrom 2021.2.2
class Layout
{
public function menu()
{
// Here we print output for example:
var_dump(Foo::create('topMenu', function($menu) {
$menu->logo('link');
$menu->color('blue');
return $menu;
}));
}
}
class Foo
{
public static function create(string $menu, Closure $callback)
{
// Here we create new object of Menu class:
return $callback(new Menu);
}
}
class Menu
{
public function logo(string $logo) {
$this->logo = $logo;
}
public function color(string $color) {
$this->color = $color;
}
}
// Run:
$layout = new Layout;
$layout->menu();
在这里你可以看到例子:http://sandbox.onlinephpfunctions.com/code/1c866c17c607433bd91800facc1a948841cdf6eb
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){}
}
如何使用annonymus 函数访问Class 内部Foo::create 方法的成员方法? $menu 作为菜单的对象 Class.. 核心 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..
}
但如果不是 returning 来自 Foo::create 的对象,它就不起作用 目前工作
Foo::create('topMenu',function($menu){
$menu->logo($logolink);
$menu->color('blue');
return $menu;
});
但需要..只有没有 return $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 无法从 $menu 中显示 $methods inside Foo::crete();
我认为 IDE 问题只针对我这边,你这边也一样吗? phpstrom 2021.2.2
class Layout
{
public function menu()
{
// Here we print output for example:
var_dump(Foo::create('topMenu', function($menu) {
$menu->logo('link');
$menu->color('blue');
return $menu;
}));
}
}
class Foo
{
public static function create(string $menu, Closure $callback)
{
// Here we create new object of Menu class:
return $callback(new Menu);
}
}
class Menu
{
public function logo(string $logo) {
$this->logo = $logo;
}
public function color(string $color) {
$this->color = $color;
}
}
// Run:
$layout = new Layout;
$layout->menu();
在这里你可以看到例子:http://sandbox.onlinephpfunctions.com/code/1c866c17c607433bd91800facc1a948841cdf6eb