A simple PHP package that returns information about a database's table structure.
Describe is a PHP package that returns information about a table structure from a database.
Install Describe via Composer:
$ composer require rougin/describeDescribe requires a vendor-specific driver to get a database table's structure:
// index.php
use Rougin\Describe\Driver\MysqlDriver;
$dsn = 'mysql:host=localhost;dbname=test';
$pdo = new PDO($dsn, 'root', '');
$driver = new MysqlDriver($pdo, 'test');Below are the available drivers for specified vendors:
| Driver | Description | Vendor |
|---|---|---|
Rougin\Describe\Driver\MysqlDriver | Uses the DESCRIBE query. | MySQL |
Rougin\Describe\Driver\SqlServerDriver | Uses the INFORMATION_SCHEMA.COLUMNS query. | SQL Server |
Rougin\Describe\Driver\SqliteDriver | Uses the PRAGMA table_info() query. | SQLite |
Alternatively, the DatabaseDriver can also be used to use a vendor-specific driver based on keyword:
use Rougin\Describe\Driver\DatabaseDriver;
$creds = array('password' => '');
$creds['hostname'] = 'localhost';
$creds['database'] = 'test';
$creds['username'] = 'root';
$driver = new DatabaseDriver('mysql', $creds);After specifying the driver, use the columns method to return a list of columns:
// index.php
/** @var \Rougin\Describe\Column[] */
$columns = $driver->columns('users');TableThe Table class is similar with the DriverInterface with the difference that it can return the primary key from the list of columns:
use Rougin\Describe\Table;
$table = new Table('users', $driver);
/** @var \Rougin\Describe\Column[] */
$columns = $driver->columns();
/** @var \Rougin\Describe\Column */
$primary = $driver->primary();For more information regarding the Column object, kindly check its code documentation.
Use the DriverInterface for implementing a vendor-specific driver:
namespace Rougin\Describe\Driver;
interface DriverInterface
{
/**
* Returns a list of columns from a table.
*
* @param string $table
*
* @return \Rougin\Describe\Column[]
*/
public function columns($table);
/**
* Returns a list of tables.
*
* @return \Rougin\Describe\Table[]
*/
public function tables();
}The following projects below uses Describe as a valuable tool:
Combustor is a utility package for Codeigniter 3 that generates controllers, models, and views based on the provided database tables. It uses Describe for getting columns from a database table and as the basis for code generation.
Refinery is a console-based package of Migrations Class for the Codeigniter 3. It uses Describe for retrieving the database tables for creating database migrations.