/** * Checks call to see if we can create a table from a magic call (for you wizards). * hover_striped, bordered_condensed, etc. * * @param string $method Method name * @param array $parameters Method parameters * * @return mixed */ public static function __callStatic($method, $parameters) { // Opening a table if (TB::str_contains($method, 'open') or $method == 'open') { $method = strtolower($method); $classes = explode('_', $method); $method = array_pop($classes); // Fallback to default type if defined if (sizeof($classes) == 0) { $classes = Kohana::$config->load('tb.table.classes'); } // Filter table classes $classes = array_intersect($classes, static::$classes); $attributes = TB::set_multi_class_attributes($method, $classes, $parameters, 0, 'table-'); $attributes = Arr::get($attributes, 0); static::$table = new static($attributes); return static::$table->open(); } // Set default function if (!$method) { $method = 'table'; } // Use cases switch ($method) { case 'close': $close = static::table()->close(); static::$table = NULL; return $close; break; default: return call_user_func_array(array(static::table(), $method), $parameters); break; } }
// Register properties $builder->registerPropertyName('id', 'public_id'); $builder->registerPropertyName('name', 'public_name'); $builder->registerPropertyName('score', 'public_score'); /** * Set select order */ // Order by score desc $builder->orderBy(new OrderParameter('score', OrderParameter::DESC)); // Same score? Order by name asc $builder->orderBy(new OrderParameter('name', OrderParameter::ASC)); // Same score and same name? Sort on ID $builder->orderBy(new OrderParameter('id', OrderParameter::ASC)); // Set the request parameters $builder->setRequest($_GET); /** * Select and output data */ // Build the select query $query = $builder->build(); // Load the data $sql = $query->toQuery($pdo, 'entries'); $results = $pdo->query($sql)->fetchAll(); // Post process results. Very important. Don't forget. $results = $builder->processResults($query, $results); // Display the records $table = new Table(['id', 'name', 'score']); $table->open(); $table->data($results); $table->close(); $table->navigation($builder->getNavigation());