43 lines
		
	
	
		
			990 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			43 lines
		
	
	
		
			990 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace SparkPlug\Com\Noccy\Pdo\Reflection\Reflector;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use PDO;
							 | 
						||
| 
								 | 
							
								use SparkPlug\Com\Noccy\Pdo\PdoResource;
							 | 
						||
| 
								 | 
							
								use SparkPlug\Com\Noccy\Pdo\Reflection\DatabaseReflectionInterface;
							 | 
						||
| 
								 | 
							
								use SparkPlug\Com\Noccy\Pdo\Reflection\TableReflectionInterface;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class MysqlDatabaseReflection implements DatabaseReflectionInterface
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    private PDO $pdo;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    private array $tables = [];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function __construct(PdoResource $db)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $pdo = $db->getPDO();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $tableQuery = $pdo->prepare('show full tables');
							 | 
						||
| 
								 | 
							
								        $tableQuery->execute();
							 | 
						||
| 
								 | 
							
								        $tables = $tableQuery->fetchAll(PDO::FETCH_ASSOC);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        foreach ($tables as $table) {
							 | 
						||
| 
								 | 
							
								            $name = reset($table);
							 | 
						||
| 
								 | 
							
								            $this->tables[$name] = new MysqlTableReflection($db, $name);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function getAllTables(): array
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return $this->tables;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function getTable(string $name): ?TableReflectionInterface
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return $this->tables[$name] ?? null;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 |