shindakioku/overload

Package for overload in php

1.0.0 2017-07-03 10:18 UTC

This package is auto-updated.

Last update: 2025-04-29 00:36:42 UTC


README

Класс который делает немного магии

Класс позволяет Вам использовать перегрузку методов (ad hoc) на 40%.

Почему 40? В пхп не разрешено объявлять методы с одинаковыми именами.

Использование класса:

class Bar {}

class Foo
{
    public function withoutArguments(): string
    {
        return 'string';
    }

    public function argument1(string $name): string
    {
        return $name;
    }

    public function argument2(int $number): int
    {
        return $number;
    }

    public function withObject(Bar $bar): Bar
    {
        return $bar;
    }
}

$overload = new Overload\Overload(
    new Overload\OverloadClass(Foo::class), 'argument1', 'argument2'
);

$overload->call('shinda'); // argument1
$overload->call(2); // argument2

$bar = (new Overload\Overload(
    new Overload\OverloadClass(Foo::class), 'withObject'
))->call(new Bar); // $bar = Bar object;

(new Overload\Overload(
        new Overload\OverloadClass(Foo::class), 'withoutArguments'
    ))->call(); // 'string'