/** * Test extraction of toolbox. * * @return void */ public function testGetExtractedToolBox() { $helper = new SimpleFacadeBeanHelper(); list($redbean, $database, $writer, $toolbox) = $helper->getExtractedToolbox(); asrt($redbean instanceof OODB, TRUE); asrt($database instanceof Adapter, TRUE); asrt($writer instanceof QueryWriter, TRUE); asrt($toolbox instanceof ToolBox, TRUE); }
/** * Test whether we can obtain a toolbox properly. * * @return void */ public function testCanWeObtainToolbox() { $toolbox = R::getToolBox(); asrt($toolbox instanceof TB, TRUE); $extractedToolbox = R::getExtractedToolbox(); asrt(is_array($extractedToolbox), TRUE); asrt(count($extractedToolbox), 4); asrt($extractedToolbox[0] instanceof OODB, TRUE); asrt($extractedToolbox[1] instanceof Adapter, TRUE); asrt($extractedToolbox[2] instanceof QueryWriter, TRUE); asrt($extractedToolbox[3] instanceof TB, TRUE); $beanHelper = new SimpleFacadeBeanHelper(); $toolbox2 = $beanHelper->getToolbox(); asrt($toolbox2 instanceof TB, TRUE); asrt($toolbox, $toolbox2); $extractedToolbox = $beanHelper->getExtractedToolbox(); asrt(is_array($extractedToolbox), TRUE); asrt(count($extractedToolbox), 4); asrt($extractedToolbox[0] instanceof OODB, TRUE); asrt($extractedToolbox[1] instanceof Adapter, TRUE); asrt($extractedToolbox[2] instanceof QueryWriter, TRUE); asrt($extractedToolbox[3] instanceof TB, TRUE); }
/** * Returns a model for a bean based on its type. * * @param OODBBean $bean * * @return object */ public function getModelForBean(\RedBeanPHP\OODBBean $bean) { if ($bean->getMeta('type') === 'meal') { $model = new Model_Soup(); $model->loadBean($bean); return $model; } else { return parent::getModelForBean($bean); } }
/** * @param ConfigInterface $config * @throws InvalidConfigException */ public function __construct(ConfigInterface $config) { $this->setConfig($config); if ($this->configIsEmpty('timezone')) { $this->getConfigObject()->setProtected('timezone', 'Asia/Jakarta'); } if ($this->configIsEmpty('publicDir')) { $this->getConfigObject()->setPublic('publicDir', 'public/'); } $this->setupTheme(); $this->langAdjustment(); date_default_timezone_set($this->config('timezone')); $this->addLangfile('common', $this->config('language')); $this->addLangfile('common', $this->getLanguage()); // Setting up RedBean $dbConfig = $config->getProtected('dbConfig'); if (!empty($dbConfig)) { $namespace = 'App'; if (!$this->configIsEmpty('namespace')) { $namespace = $this->config('namespace'); } if (!defined('REDBEAN_MODEL_PREFIX')) { define('REDBEAN_MODEL_PREFIX', '\\' . $namespace . '\\Models\\'); } if ($dbConfig['type'] == 'mysql') { self::setupRedBean("mysql:host={$dbConfig['host']};dbname={$dbConfig['dbname']};port={$dbConfig['port']}", $dbConfig['user'], $dbConfig['password'], $config->getProtected('isDevMode')); } elseif ($dbConfig['type'] == 'sqlite') { self::setupRedBean("sqlite:{$dbConfig['dbname']}", $dbConfig['user'], $dbConfig['password'], $config->getProtected('isDevMode')); } if (!$this->configIsEmpty('freeze') && $this->config('freeze') == false) { R::freeze(false); } // Below is needed so that RedBeanPHP\SimpleModel may use $this->app: SimpleFacadeBeanHelper::setFactoryFunction(function ($beanTypeName) { /** @var \Skully\App\Models\BaseModel $model */ $model = new $beanTypeName(); $model->setApp($this); return $model; }); } }