Anonymous operators
We've been using the lift()
method to use custom operators in Observable chains a lot. In RxPHP v1, it's also the only way to implement custom operators. This method takes as a parameter the so called operator factory, which is a callable that returns an instance of the operator we want to use. This method is called every time we subscribe, so it might be called just once in total.
When using operators, we're making use of PHP's magic __invoke()
method that allows us to use any object just as if it were a function.
Let's consider this simple example that shows the __invoke()
method:
// func_01.php class MyClass { public function __invoke($a, $b) { return $a * $b; } } $obj = new MyClass(); var_dump($obj(3, 4));
We make an instance of MyClass
that we used as if it was a regular function with $obj(3,4)
. If we run this example, we'll get the correct result:
$ php func_01.php int(12)
Operators in RxPHP use the same principle...