} public function into($table) { } public function query() { } } // Spl auto loader require 'SplClassLoader.php'; $loader = new SplClassLoader(null, implode(DIRECTORY_SEPARATOR, array(__DIR__, '..', 'src'))); $loader->register(); // SQL builder $query = new SQLBuilder(); // Run some successful queries $query->getBuilder()->select('*')->from('foo')->where('bar = 1')->query(); // SELECT * FROM foo WHERE bar = 1; $query->getBuilder()->update('foo')->set(array('bar' => 2))->where('bar = 1')->query(); // UPDATE foo SET bar = 2 WHERE bar = 1; $query->getBuilder()->insert(array('foo' => 3))->into('foo')->query(); // INSERT INTO foo (bar) VALUES (3); $query->getBuilder()->delete()->from('foo')->where('bar = 2')->query(); // DELETE FROM foo WHERE bar = 2 $query->getBuilder()->delete()->from('foo')->where('bar = 2')->query(); // DELETE FROM foo WHERE bar = 2 // Try go against the hierarchy try { $query->getBuilder()->select('*')->from('foo')->into('bar')->query(); } catch (\Chainnn\Exception\RuntimeException $e) { echo $e->getMessage(); // Invalid use of chain