44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
		
		
			
		
	
	
			44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
|  | <?php | ||
|  | /** | ||
|  |  * Based entirely off of dereuromark's plugins as I was having trouble getting fixtures to load | ||
|  |  * after moving the plugins outside of an existing cakephp app's plugins folder | ||
|  |  * | ||
|  |  * @link https://github.com/dereuromark/cakephp-tools/blob/master/tests/schema.php | ||
|  |  */ | ||
|  | use Cake\Utility\Inflector; | ||
|  | 
 | ||
|  | $tables = []; | ||
|  | 
 | ||
|  | /** | ||
|  |  * @var \DirectoryIterator<\DirectoryIterator> $iterator | ||
|  |  */ | ||
|  | $iterator = new DirectoryIterator(__DIR__ . DS . 'Fixture'); | ||
|  | foreach ($iterator as $file) { | ||
|  | 	if (!preg_match('/(\w+)Fixture.php$/', (string)$file, $matches)) { | ||
|  | 		continue; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	$name = $matches[1]; | ||
|  | 	$tableName = Inflector::underscore($name); | ||
|  | 	$class = 'CakeProducts\\Test\\Fixture\\' . $name . 'Fixture'; | ||
|  | 	try { | ||
|  | 		$object = (new ReflectionClass($class))->getProperty('fields'); | ||
|  | 	} catch (ReflectionException $e) { | ||
|  | 		continue; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	$array = $object->getDefaultValue(); | ||
|  | 	$constraints = $array['_constraints'] ?? []; | ||
|  | 	$indexes = $array['_indexes'] ?? []; | ||
|  | 	unset($array['_constraints'], $array['_indexes'], $array['_options']); | ||
|  | 	$table = [ | ||
|  | 		'table' => $tableName, | ||
|  | 		'columns' => $array, | ||
|  | 		'constraints' => $constraints, | ||
|  | 		'indexes' => $indexes, | ||
|  | 	]; | ||
|  | 	$tables[$tableName] = $table; | ||
|  | } | ||
|  | 
 | ||
|  | return $tables; |