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();
/** * 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\')'); } }
<?php namespace RedUNIT\Base; use RedUNIT\Base; use RedBeanPHP\Facade as R; use RedBeanPHP\OODBBean; use RedBeanPHP\QueryWriter\AQueryWriter; R::ext('xdispense', function ($type) { return R::getRedBean()->dispense($type); }); define('BOOK', 'tbl_book'); define('AUTHOR', 'tbl_author'); define('COAUTHOR', 'coAuthor'); define('FRIEND', 'tbl_friend'); define('PUBLISHER', 'tbl_publisher'); define('BOOKLIST', 'ownTbl_book'); define('FRIENDLIST', 'sharedTbl_friend'); /** * Prefixes * * @file RedUNIT/Base/Prefixes.php * @desc Tests whether you can use RedBeanPHP with table prefixes. * @author Gabor de Mooij and the RedBeanPHP Community * @license New BSD/GPLv2 * * (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community. * This source file is subject to the New BSD/GPLv2 License that is bundled * with this source code in the file license.txt. */ class Prefixes extends Base
R::ext('getAllpage', function ($tbname, $startIndex = 0, $numRows = 20, $type = null, $userid = 'system') { return AMFUtil::getAllpage($tbname, $startIndex, $numRow, $type, $userid); }); R::ext('getKey', function () { return AMFUtil::getKey(); }); // public static function setKey($key) { R::ext('setKey', function ($key) { return AMFUtil::setKey($key); }); // public static function mc_encrypt($encrypt, $key=null){ R::ext('mcencrypt', function ($encrypt, $key = null) { return AMFUtil::mcencrypt($encrypt, $key); }); // public static function mc_decrypt($decrypt, $key=null){ R::ext('mcdecrypt', function ($decrypt, $key = null) { return AMFUtil::mcdecrypt($decrypt, $key); }); R::ext('image_resize', function ($src, $dst, $width, $height, $crop = 0) { return AMFUtil::image_resize($src, $dst, $width, $height, $crop); }); echo 'testRbplugin'; // R::ext('',function( ){ // return AMFUtil::(); // }); // R::ext('',function( ){ // return AMFUtil::(); // }); // R::ext('',function( ){ // return AMFUtil::(); // });