public function __construct() { $provider = Config::get('providers', 'view', null); if ($provider) { // use reflection to detect the provider class name $refMethod = new \ReflectionMethod($provider, 'provides'); $rendererClass = $refMethod->invoke(new $provider()); if (empty($rendererClass)) { throw new ViewException("Class {$provider} doesn't provides a valid renderer class"); } $this->renderer = new $rendererClass(); } else { $refMethod = new \ReflectionMethod(__NAMESPACE__ . '\\ViewProvider', 'provides'); $rendererClass = $refMethod->invoke(new ViewProvider()); $this->renderer = new $rendererClass(); } }
private function startSession() { if (headers_sent()) { throw new SessionException('Unable to start session handling, headers already sent.'); } $provider = Config::get('providers.session'); if ($provider) { if (!class_exists($provider)) { throw new IllegalArgumentException('Unable to set session provider to ' . $provider); } $handlerClass = (new $provider())->provides(); $handler = new $handlerClass(); session_set_save_handler($handler, true); } session_start(); }
public function delete() { $table_name = $this->getTable(); $config = Config::get('database', $this->getConnection(), 'default'); $conn = new Connection($config); $pk = $this->getPrimaryKey(); if (!isset($this->attributes[$pk])) { return -1; } return (new DeleteQuery($table_name, $conn))->where($pk, $this->attributes[$pk])->execute(); }