upload files into repos

This commit is contained in:
Nikiroy78 2023-03-12 01:19:06 +03:00
parent e816c73b5e
commit 804419317d
6 changed files with 228 additions and 39 deletions

View File

@ -1,20 +1,7 @@
<?php
/* Отключим WARNING */
error_reporting(E_ERROR | E_PARSE);
include "./logic/mysql-realization.php";
include "method.php";
function output () {
$model = new Model(
new RealizationMySQL("127.0.0.1", "root", "root", "realizations-db")
);
$modelElements = $model->getModelElement();
$outputList = array();
foreach ($modelElements as $item) {
$outputList[] = $item['id'] . ' ' . $item['data'];
}
return implode("\n", $outputList);
}
die(output());
die(output($_GET['root']));
?>

View File

@ -6,7 +6,7 @@ class Model {
$this->realization = $realization;
}
public function getModelElement ($root = null, $stringData = true, $reversiveModelId="") {
public function getModelElement ($root = null, $stringData = false, $reversiveModelId="") {
$returnValues = array();
$this->realization->ready();
$items = $this->realization->getElement($root);
@ -17,21 +17,25 @@ class Model {
if ($item['isElement'] == false) {
if ($stringData) $returnValues[] = array (
"id" => $rootId,
"data" => $item['stringData']
"data" => $item['stringData'],
"root_id" => $item['id']
);
else $returnValues[] = array (
"id" => $rootId,
"data" => $item['data']
"data" => $item['data'],
"root_id" => $item['id']
);
}
else {
if ($stringData) $returnValues[] = array (
"id" => $rootId,
"data" => $item['stringData']
"data" => $item['stringData'],
"root_id" => $item['id']
);
else $returnValues[] = array (
"id" => $rootId,
"data" => $item['data']
"data" => $item['data'],
"root_id" => $item['id']
);
$childElements = $this->getModelElement(
@ -42,7 +46,8 @@ class Model {
foreach ($childElements as $childElement) {
$returnValues[] = array (
"id" => $childElement['id'],
"data" => $childElement['data']
"data" => $childElement['data'],
"root_id" => $item['id']
);
}
}

34
1.php/method.php Normal file
View File

@ -0,0 +1,34 @@
<?php
include "./logic/mysql-realization.php";
function output ($root = "") {
$itemIerarchyId = ""; // Без этого параметра у нас будет выводиться с единицы, а не с номера элемента в общей иерархии
$model = new Model(
new RealizationMySQL("127.0.0.1", "root", "root", "realizations-db")
);
if ($root == "" || $root == null) {
$root = null;
}
else {
$modelElementsForSearch = $model->getModelElement(null, true);
foreach ($modelElementsForSearch as $i) {
if ($i['id'] == $root) {
$itemIerarchyId = $i['id'];
$root = $i['root_id'];
break;
}
}
}
$modelElements = $model->getModelElement($root, true, $itemIerarchyId);
$outputList = array();
foreach ($modelElements as $item) {
$outputList[] = $item['id'] . ' ' . $item['data'];
}
return implode("\n", $outputList);
}
?>

View File

@ -20,6 +20,7 @@
# Постановка задачи
Необходимо написать страницу на php, которая будет выводить информацию из модели о его родителях и наследниках. При этом, дополнительно предусмотреть возможность вывода наследников отдельного родителя, введённого в параметрах *(это условие не обязательно)*
# Реализация
## Разработка модели
Поскольку вывод информации происходит из абстрактной модели, нам необходимо сделать собственную реализацию модели. Далее, обеспечить модульность, чтобы можно было менять практическую реализацию модели *(например, заменить запросы к БД на запросы к файловой системе и т.д.)*.
При разработки модели было принято решение реализовать класс для модели и для её реализации:
@ -103,7 +104,7 @@ class Model {
$this->realization = $realization;
}
public function getModelElement ($root = null, $stringData = true, $reversiveModelId="") {
public function getModelElement ($root = null, $stringData = false, $reversiveModelId="") {
$returnValues = array();
$this->realization->ready();
$items = $this->realization->getElement($root);
@ -114,21 +115,25 @@ class Model {
if ($item['isElement'] == false) {
if ($stringData) $returnValues[] = array (
"id" => $rootId,
"data" => $item['stringData']
"data" => $item['stringData'],
"root_id" => $item['id']
);
else $returnValues[] = array (
"id" => $rootId,
"data" => $item['data']
"data" => $item['data'],
"root_id" => $item['id']
);
}
else {
if ($stringData) $returnValues[] = array (
"id" => $rootId,
"data" => $item['stringData']
"data" => $item['stringData'],
"root_id" => $item['id']
);
else $returnValues[] = array (
"id" => $rootId,
"data" => $item['data']
"data" => $item['data'],
"root_id" => $item['id']
);
$childElements = $this->getModelElement(
@ -139,7 +144,8 @@ class Model {
foreach ($childElements as $childElement) {
$returnValues[] = array (
"id" => $childElement['id'],
"data" => $childElement['data']
"data" => $childElement['data'],
"root_id" => $item['id']
);
}
}
@ -301,3 +307,52 @@ class RealizationMySQL extends Realization { // Создал класс, нас
}
}
```
## Разработка основной страницы
Далее, вся реализация была помещена в папку logic и разбита на два файла: model.php *(Базовый класс интерфейса модели и абстрактный реализации)* и mysql-realization.php *(Класс реализации MySQL)*.
Далее можно приступить к непосредственной реализации программы: в корне мы создадим два файла: method.php и index.php.
В method.php будет расположена функция, принимающая в себя параметр рассматриваемого элемента (либо принимающий факт его отсутствия (null)) и возвращающая ответ. Отдельно созданный файл нужен, чтобы в случае надобности применения данных из данной программы с заданными параметрами мы могли их импортировать как модуль программы, а не делать отдельно HTTP-запрос к странице.
```php
include "./logic/mysql-realization.php";
function output ($root = "") {
$itemIerarchyId = ""; // Без этого параметра у нас будет выводиться с единицы, а не с номера элемента в общей иерархии
$model = new Model(
new RealizationMySQL("127.0.0.1", "root", "root", "realizations-db")
);
if ($root == "" || $root == null) {
$root = null;
}
else {
$modelElementsForSearch = $model->getModelElement(null, true);
foreach ($modelElementsForSearch as $i) {
if ($i['id'] == $root) {
$itemIerarchyId = $i['id'];
$root = $i['root_id'];
break;
}
}
}
$modelElements = $model->getModelElement($root, true, $itemIerarchyId);
$outputList = array();
foreach ($modelElements as $item) {
$outputList[] = $item['id'] . ' ' . $item['data'];
}
return implode("\n", $outputList);
}
```
Далее, мы вызываем данную функцию из index.php:
```php
/* Отключим WARNING */
error_reporting(E_ERROR | E_PARSE);
include "method.php";
die(output($_GET['root']));
```
Проект завершён.

View File

@ -0,0 +1,55 @@
CREATE DATABASE IF NOT EXISTS `realizations-db` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;
USE `realizations-db`;
-- MySQL dump 10.13 Distrib 8.0.30, for Win64 (x86_64)
--
-- Host: localhost Database: realizations-db
-- ------------------------------------------------------
-- Server version 8.0.30
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!50503 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `model-table`
--
DROP TABLE IF EXISTS `model-table`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `model-table` (
`id` int NOT NULL AUTO_INCREMENT,
`legatee` int DEFAULT NULL,
`data` varchar(64) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `model-table`
--
LOCK TABLES `model-table` WRITE;
/*!40000 ALTER TABLE `model-table` DISABLE KEYS */;
INSERT INTO `model-table` VALUES (1,NULL,'RRT'),(2,1,'RRTm'),(3,1,'qwe'),(4,3,'qwe1'),(5,3,'qwe2'),(6,NULL,'ert');
/*!40000 ALTER TABLE `model-table` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2023-03-12 1:16:25

View File

@ -0,0 +1,53 @@
-- MySQL dump 10.13 Distrib 8.0.30, for Win64 (x86_64)
--
-- Host: localhost Database: realizations-db
-- ------------------------------------------------------
-- Server version 8.0.30
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!50503 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `model-table`
--
DROP TABLE IF EXISTS `model-table`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `model-table` (
`id` int NOT NULL AUTO_INCREMENT,
`legatee` int DEFAULT NULL,
`data` varchar(64) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `model-table`
--
LOCK TABLES `model-table` WRITE;
/*!40000 ALTER TABLE `model-table` DISABLE KEYS */;
INSERT INTO `model-table` VALUES (1,NULL,'RRT'),(2,1,'RRTm'),(3,1,'qwe'),(4,3,'qwe1'),(5,3,'qwe2'),(6,NULL,'ert');
/*!40000 ALTER TABLE `model-table` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2023-03-12 1:17:10