Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

MARIN's avatar
Level 2

call_user_func from class using facade

Hi,

I've been playing with Facades and I am trying to get something to work, but I keep getting an error I dont understand. Perhaps one of you can help.

I have created a class Menu

<?php

namespace my\package;

class Menu {

    public function make($name, $callback)
    {
        call_user_func($callback, $name);
    }

    public function add($title)
    {
        return 'test';
    }
}

And I created a Facade

<?php

namespace my\package\Facades;

use Illuminate\Support\Facades\Facade;

class Menu extends Facade
{

    protected static function getFacadeAccessor()
    {
        return 'menu';
    }
}

And created a ServiceProvider

<?php

namespace my\package;

use my\package\Facades\Menu;
use Illuminate\Support\ServiceProvider;

class MyPackageServiceProvider extends ServiceProvider
{
      /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->bind('menu', 'my\package\Menu');

        Menu::make('Test', function($menu){
            $menu->add('Test');
        });
    }
}

I keep getting "Call to a member function add() on string" What am I doing wrong?

0 likes
0 replies

Please or to participate in this conversation.