A super easy PHP Framework for web development!
https://github.com/exacti/phacil-framework
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.2 KiB
92 lines
2.2 KiB
<?php
|
|
|
|
/**
|
|
* Copyright © 2023 ExacTI Technology Solutions. All rights reserved.
|
|
* GPLv3 General License.
|
|
* https://exacti.com.br
|
|
* Phacil PHP Framework - https://github.com/exacti/phacil-framework
|
|
*/
|
|
|
|
namespace Phacil\Framework\MagiQL\Syntax;
|
|
|
|
/**
|
|
* Class SyntaxFactory.
|
|
*/
|
|
final class SyntaxFactory
|
|
{
|
|
/**
|
|
* Creates a collection of Column objects.
|
|
*
|
|
* @param array $arguments
|
|
* @param Table|null $table
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function createColumns(array &$arguments, $table = null)
|
|
{
|
|
$createdColumns = [];
|
|
|
|
foreach ($arguments as $index => $column) {
|
|
if (!is_object($column)) {
|
|
$newColumn = array($column);
|
|
$column = self::createColumn($newColumn, $table);
|
|
if (!is_numeric($index)) {
|
|
$column->setAlias($index);
|
|
}
|
|
|
|
$createdColumns[] = $column;
|
|
} else if ($column instanceof Column) {
|
|
$createdColumns[] = $column;
|
|
}
|
|
}
|
|
|
|
return \array_filter($createdColumns);
|
|
}
|
|
|
|
/**
|
|
* Creates a Column object.
|
|
*
|
|
* @param array $argument
|
|
* @param null|Table $table
|
|
*
|
|
* @return Column
|
|
*/
|
|
public static function createColumn(array &$argument, $table = null)
|
|
{
|
|
$columnName = \array_values($argument);
|
|
$columnName = $columnName[0];
|
|
|
|
$columnAlias = \array_keys($argument);
|
|
$columnAlias = $columnAlias[0];
|
|
|
|
if (\is_numeric($columnAlias) || \strpos($columnName, '*') !== false) {
|
|
$columnAlias = null;
|
|
}
|
|
|
|
return new Column($columnName, (string) $table, $columnAlias);
|
|
}
|
|
|
|
/**
|
|
* Creates a Table object.
|
|
*
|
|
* @param string[] $table
|
|
*
|
|
* @return Table
|
|
*/
|
|
public static function createTable($table)
|
|
{
|
|
$tableName = $table;
|
|
if (\is_array($table)) {
|
|
$tableName = \current($table);
|
|
$tableAlias = \key($table);
|
|
}
|
|
|
|
$newTable = new Table($tableName);
|
|
|
|
if (isset($tableAlias) && !is_numeric($tableAlias)) {
|
|
$newTable->setAlias($tableAlias);
|
|
}
|
|
|
|
return $newTable;
|
|
}
|
|
}
|
|
|