Skip to content

Getting error "method_exists(): Argument #1 ($object_or_class) must be of type object|string, array given" when using Livewire and AdminLTE. #517

Closed
@JA-Developer

Description

@JA-Developer

What were you trying to do?

I have a personal project that I have been building in a web environment for a long time. The project is using Javascript and Livewire for the "frontend" and PHP 8.4 for the backend. Also, I am using the AdminLTE template with Vite. Recently, I decided to implement Native PHP in my project.

My project have installed the following libraries using composer:

  • barryvdh/laravel-dompdf ....................................................................................... DONE
  • darryldecode/cart ............................................................................................. DONE
  • jeroennoten/laravel-adminlte .................................................................................. DONE
  • laravel/fortify ............................................................................................... DONE
  • laravel/jetstream ............................................................................................. DONE
  • laravel/pail .................................................................................................. DONE
  • laravel/sail .................................................................................................. DONE
  • laravel/sanctum ............................................................................................... DONE
  • laravel/tinker ................................................................................................ DONE
  • livewire/livewire ............................................................................................. DONE
  • maatwebsite/excel ............................................................................................. DONE
  • nativephp/electron ............................................................................................ DONE
  • nativephp/laravel ............................................................................................. DONE
  • nesbot/carbon ................................................................................................. DONE
  • nunomaduro/collision .......................................................................................... DONE
  • nunomaduro/termwind ........................................................................................... DONE

What happened?

When I run the command "php artisan native:serve" everything works fine. But, when my webpage is opened I get the following error:

TypeError

"method_exists(): Argument #1 ($object_or_class) must be of type object|string, array given"

MyProject\vendor\nativephp\laravel\src\Events\EventWatcher.php :17

    public function register(): void
    {
        Event::listen('*', function (string $eventName, array $data) {
            $event = $data[0] ?? (object) null;
 
            if (! method_exists($event, 'broadcastOn')) {
                return;
            }
 
            $channels = $event->broadcastOn();
 
            // Only events dispatched on the nativephp channel
            if (! in_array('nativephp', $channels)) {
                return;
            }
 
            // Only post custom events to broadcasting endpoint

How to reproduce the bug

Make a small project with Livewire with AdminLTE where you dispatch an event using Livewire and run the command: "php artisan native:serve"

Package Versions

{
"installed": [
{
"name": "nativephp/electron",
"direct-dependency": true,
"homepage": "https://github.com/nativephp/electron",
"source": "https://github.com/NativePHP/electron/tree/0.9.0",
"version": "0.9.0",
"description": "Electron wrapper for the NativePHP framework.",
"abandoned": false
},
{
"name": "nativephp/laravel",
"direct-dependency": false,
"homepage": "https://github.com/nativephp/laravel",
"source": "https://github.com/NativePHP/laravel/tree/0.7.0",
"version": "0.7.0",
"description": "Laravel wrapper for the NativePHP framework.",
"abandoned": false
},
{
"name": "nativephp/php-bin",
"direct-dependency": false,
"homepage": "https://nativephp.com",
"source": "https://github.com/NativePHP/php-bin/tree/0.5.6",
"version": "0.5.6",
"description": "PHP binaries used by the NativePHP framework",
"abandoned": false
}
]
}

PHP Version

8.4.5

Laravel Version

11.44.2

Node Version

20.12.0

Which operating systems have you seen this occur on?

Windows

OS version

Microsoft Windows 10 Pro, 10.0.19045 N/A Build 19045

Notes

As a WorkAround, i replaced the following line in the file vendor/nativephp/laravel/src/Events/EventWatcher.php:

Image

When I did that, the exception was not thrown anymore.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions