Stage 3-2

This commit is contained in:
Abdussamed 2023-04-03 09:14:50 +03:00
parent f1a2af9c9d
commit 795074f8fc
5 changed files with 121 additions and 40 deletions

View File

@ -5,6 +5,7 @@
include_once "Helpers.php"; include_once "Helpers.php";
include_once "DatabaseConnection.php"; include_once "DatabaseConnection.php";
include_once "DatabaseORM.php"; include_once "DatabaseORM.php";
include_once "DatabaseMySQLEngine.php";
define("request", new Request(), false); define("request", new Request(), false);
define("response", new Response(), false); define("response", new Response(), false);

View File

@ -1,6 +1,6 @@
<?php <?php
include_once "Helpers.php"; include_once "Helpers.php";
class Connection class DatabaseConnection
{ {
public $client = "mysql"; public $client = "mysql";
public $user = "root"; public $user = "root";
@ -11,7 +11,7 @@
public $charset = "utf8mb4"; public $charset = "utf8mb4";
public $file = ""; public $file = "";
public $connectionString = null; public $connectionString = null;
public $db = null; public static $db = null;
public $ready = false; public $ready = false;
public function __construct( public function __construct(
$client, $client,

View File

@ -0,0 +1,37 @@
<?php
include_once "Helpers.php";
include_once "DatabaseORM.php";
include_once "DatabaseConnection.php";
class MySQLEngine extends DatabaseConnection
{
public function query(ORM $orm)
{
}
public function migrate(ORMMigrate $orm)
{
$sql = [];
$sql[] = "CREATE TABLE IF NOT EXISTS ";
$sql[] = $orm->table;
$sql[] = " ( ";
$columns = [];
foreach ($orm->columns as $name => $value) {
$type = $value[0];
$propety = $value[1] ?? "";
$columns[] = "$name $type $propety";
}
$sql[] = implode(", ",$columns);
$sql[] = ") charset=" . $orm->charset;
}
}
ORM::$defaultConnection = new MySQLEngine("mysql","root","");
ORM::migrate(function($table){
$table->id("int","auto_increment primary key");
$table->name("text");
$table->value("text");
});

View File

@ -23,15 +23,37 @@
public $groupBy = []; public $groupBy = [];
public $having = []; public $having = [];
public $orderby = []; public $orderby = [];
public $limit = []; public $limit = false;
public $union = []; public $union = [];
public $set = []; public $set = [];
public $join = []; public $join = [];
public $alter = []; public $alter = [];
public $israw = false;
public $raw = "";
public static $defaultConnection = null;
public $connection;
public function __construct()
{
$this->connection = ORM::$defaultConnection;
}
public static function name($args) public static function name($args)
{ {
return name($args); return name($args);
} }
public static function raw($sql)
{
$orm = new static();
$orm->raw = $sql;
$orm->israw = true;
return $orm;
}
public static function migrate($class)
{
$orm = new static();
$migration = new ORMMigrate();
$class($migration);
$orm->connection->migrate($migration);
}
public function from($orm) public function from($orm)
{ {
foreach (get_class_vars($orm) as $key => $value) { foreach (get_class_vars($orm) as $key => $value) {
@ -74,24 +96,43 @@
} }
public function renameTable($from, $to) public function renameTable($from, $to)
{ {
$this->mode = "alter";
$this->alter[] = ["renametable", $from, $to]; $this->alter[] = ["renametable", $from, $to];
} }
public function renameColumn($from, $to) public function renameColumn($from, $to)
{ {
$this->mode = "alter";
$this->alter[] = ["renamecolumn", $from, $to]; $this->alter[] = ["renamecolumn", $from, $to];
} }
public function modifyColumn($from, $to) public function modifyColumn($from, $to)
{ {
$this->mode = "alter";
$this->alter[] = ["modifyColumn", $from, $to]; $this->alter[] = ["modifyColumn", $from, $to];
} }
public function addColumn($from) public function addColumn($from)
{ {
$this->mode = "alter";
$this->alter[] = ["addColumn", $from, $to]; $this->alter[] = ["addColumn", $from, $to];
} }
public function removeColumn($from) public function removeColumn($from)
{ {
$this->mode = "alter";
$this->alter[] = ["addColumn", $from, $to]; $this->alter[] = ["addColumn", $from, $to];
} }
public function union(ORM $orm)
{
if($orm->mode == "select")
{
$this->union[] = $orm;
}
}
public function limit($offset = 0, $length = false)
{
$this->limit = [
"offset" => $offset,
"length" => $length
];
}
public function addWhere($statement, $name, $operator, $value) public function addWhere($statement, $name, $operator, $value)
{ {
$this->where = array_merge( $this->where = array_merge(
@ -278,12 +319,32 @@
} }
}; };
class ORMMigrate
$t = new ORM(); {
$t->table("argist"); use ReflectionHook;
$t->whereIn("name",[1,2,3]); public $table = "";
$t->orWhere([ public $charset = "";
"name"=>"value" public $columns = [];
]); public $modifycolumns = [];
public $removecolumns = [];
dd($t); public function table($name)
{
$this->table = name($name);
}
public function charset($charset)
{
$this->charset = $charset;
}
public function callable($name, $type = "int", $property = "")
{
$this->columns[name($name).""] = [$type,$property];
}
public function setAttribute($name, $value)
{
$this->modifycolumns[name($name).""] = $value;
}
public function removeAttribute($name)
{
$this->removecolumns[] = name($name)."";
}
};

View File

@ -22,11 +22,15 @@
return $this->{$formarlyA}(...$arguments); return $this->{$formarlyA}(...$arguments);
}else if(method_exists(__CLASS__, $formarlyB)) }else if(method_exists(__CLASS__, $formarlyB))
{ {
return (new static)->{$formarlyB}(...$arguments); return $this->{$formarlyB}(...$arguments);
} }
else if(method_exists(__CLASS__, "call$name")) else if(method_exists(__CLASS__, "call$name"))
{ {
return (new static)->{"call$name"}($name, ...$arguments); return $this->{"call$name"}($name, ...$arguments);
}
else if(method_exists(__CLASS__, "callable"))
{
return $this->callable($name, ...$arguments);
} }
} }
public function __get($name) public function __get($name)
@ -80,14 +84,14 @@
{ {
$this->{"set" . $formarly . "Attribute"}(); $this->{"set" . $formarly . "Attribute"}();
} }
else if(method_exists($this, "removeAttribute"))
{
return $this->removeAttribute($name);
}
else if(method_exists($this, "setAttribute")) else if(method_exists($this, "setAttribute"))
{ {
return $this->setAttribute($name, null); return $this->setAttribute($name, null);
} }
else if(method_exists($this, "remoteAttribute"))
{
return $this->remoteAttribute($name);
}
else if(property_exists($this, "_attributes") && isset($this->_attributes[$name])) else if(property_exists($this, "_attributes") && isset($this->_attributes[$name]))
{ {
unset($this->_attributes[$name]); unset($this->_attributes[$name]);
@ -99,17 +103,6 @@
{ {
return $this->reflectionCall(...$args); return $this->reflectionCall(...$args);
} }
else
{
if(property_exists(__CLASS__, "reflectionCallException"))
{
if(!(new static)->reflectionCallException)
{
return;
}
}
throw new Exception("\"".__CLASS__."()\" not callable");
}
} }
public function __toString() public function __toString()
{ {
@ -117,17 +110,6 @@
{ {
return $this->toString(); return $this->toString();
} }
else
{
if(property_exists(__CLASS__, "reflectionCallException"))
{
if(!(new static)->reflectionCallException)
{
return "";
}
}
throw new Exception("\"".__CLASS__."()\" not callable");
}
} }
public function __serialize() public function __serialize()
{ {