RedBeanPHP\Facade::ext PHP Method

ext() public static method

Using this method you can register your plugin with the facade and then use the plugin by invoking the name specified plugin name as a method on the facade. Usage: R::ext( 'makeTea', function() { ... } ); Now you can use your makeTea plugin like this: R::makeTea();
public static ext ( string $pluginName, callable $callable ) : void
$pluginName string name of the method to call the plugin
$callable callable a PHP callable
return void
    public static function ext($pluginName, $callable)
    {
        if (!ctype_alnum($pluginName)) {
            throw new RedException('Plugin name may only contain alphanumeric characters.');
        }
        self::$plugins[$pluginName] = $callable;
    }

Usage Example

Example #1
0
 /**
  * Test if we can dynamically extend the R-facade.
  * 
  * @return void
  */
 public function testDynamicPlugins()
 {
     testpack('Test dynamic plugins');
     //basic behaviour
     R::ext('makeTea', function () {
         return 'sorry cant do that!';
     });
     asrt(R::makeTea(), 'sorry cant do that!');
     //with parameters
     R::ext('multiply', function ($a, $b) {
         return $a * $b;
     });
     asrt(R::multiply(3, 4), 12);
     //can we call R inside?
     R::ext('singVersion', function () {
         return R::getVersion() . ' lalala !';
     });
     asrt(R::singVersion(), R::getVersion() . ' lalala !');
     //should also work with Facade
     asrt(Facade::singVersion(), R::getVersion() . ' lalala !');
     //test error handling
     try {
         R::ext('---', function () {
         });
         fail();
     } catch (RedException $e) {
         asrt($e->getMessage(), 'Plugin name may only contain alphanumeric characters.');
     }
     try {
         R::__callStatic('---', function () {
         });
         fail();
     } catch (RedException $e) {
         asrt($e->getMessage(), 'Plugin name may only contain alphanumeric characters.');
     }
     try {
         R::invalidMethod();
         fail();
     } catch (RedException $e) {
         asrt($e->getMessage(), 'Plugin \'invalidMethod\' does not exist, add this plugin using: R::ext(\'invalidMethod\')');
     }
 }
All Usage Examples Of RedBeanPHP\Facade::ext