upload files into repos
This commit is contained in:
parent
e816c73b5e
commit
804419317d
@ -1,20 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
/* Отключим WARNING */
|
||||||
error_reporting(E_ERROR | E_PARSE);
|
error_reporting(E_ERROR | E_PARSE);
|
||||||
include "./logic/mysql-realization.php";
|
include "method.php";
|
||||||
|
|
||||||
function output () {
|
die(output($_GET['root']));
|
||||||
$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());
|
|
||||||
?>
|
?>
|
@ -6,7 +6,7 @@ class Model {
|
|||||||
$this->realization = $realization;
|
$this->realization = $realization;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getModelElement ($root = null, $stringData = true, $reversiveModelId="") {
|
public function getModelElement ($root = null, $stringData = false, $reversiveModelId="") {
|
||||||
$returnValues = array();
|
$returnValues = array();
|
||||||
$this->realization->ready();
|
$this->realization->ready();
|
||||||
$items = $this->realization->getElement($root);
|
$items = $this->realization->getElement($root);
|
||||||
@ -17,21 +17,25 @@ class Model {
|
|||||||
if ($item['isElement'] == false) {
|
if ($item['isElement'] == false) {
|
||||||
if ($stringData) $returnValues[] = array (
|
if ($stringData) $returnValues[] = array (
|
||||||
"id" => $rootId,
|
"id" => $rootId,
|
||||||
"data" => $item['stringData']
|
"data" => $item['stringData'],
|
||||||
|
"root_id" => $item['id']
|
||||||
);
|
);
|
||||||
else $returnValues[] = array (
|
else $returnValues[] = array (
|
||||||
"id" => $rootId,
|
"id" => $rootId,
|
||||||
"data" => $item['data']
|
"data" => $item['data'],
|
||||||
|
"root_id" => $item['id']
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if ($stringData) $returnValues[] = array (
|
if ($stringData) $returnValues[] = array (
|
||||||
"id" => $rootId,
|
"id" => $rootId,
|
||||||
"data" => $item['stringData']
|
"data" => $item['stringData'],
|
||||||
|
"root_id" => $item['id']
|
||||||
);
|
);
|
||||||
else $returnValues[] = array (
|
else $returnValues[] = array (
|
||||||
"id" => $rootId,
|
"id" => $rootId,
|
||||||
"data" => $item['data']
|
"data" => $item['data'],
|
||||||
|
"root_id" => $item['id']
|
||||||
);
|
);
|
||||||
|
|
||||||
$childElements = $this->getModelElement(
|
$childElements = $this->getModelElement(
|
||||||
@ -42,7 +46,8 @@ class Model {
|
|||||||
foreach ($childElements as $childElement) {
|
foreach ($childElements as $childElement) {
|
||||||
$returnValues[] = array (
|
$returnValues[] = array (
|
||||||
"id" => $childElement['id'],
|
"id" => $childElement['id'],
|
||||||
"data" => $childElement['data']
|
"data" => $childElement['data'],
|
||||||
|
"root_id" => $item['id']
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
34
1.php/method.php
Normal file
34
1.php/method.php
Normal 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);
|
||||||
|
}
|
||||||
|
?>
|
@ -20,6 +20,7 @@
|
|||||||
# Постановка задачи
|
# Постановка задачи
|
||||||
Необходимо написать страницу на php, которая будет выводить информацию из модели о его родителях и наследниках. При этом, дополнительно предусмотреть возможность вывода наследников отдельного родителя, введённого в параметрах *(это условие не обязательно)*
|
Необходимо написать страницу на php, которая будет выводить информацию из модели о его родителях и наследниках. При этом, дополнительно предусмотреть возможность вывода наследников отдельного родителя, введённого в параметрах *(это условие не обязательно)*
|
||||||
# Реализация
|
# Реализация
|
||||||
|
|
||||||
## Разработка модели
|
## Разработка модели
|
||||||
Поскольку вывод информации происходит из абстрактной модели, нам необходимо сделать собственную реализацию модели. Далее, обеспечить модульность, чтобы можно было менять практическую реализацию модели *(например, заменить запросы к БД на запросы к файловой системе и т.д.)*.
|
Поскольку вывод информации происходит из абстрактной модели, нам необходимо сделать собственную реализацию модели. Далее, обеспечить модульность, чтобы можно было менять практическую реализацию модели *(например, заменить запросы к БД на запросы к файловой системе и т.д.)*.
|
||||||
При разработки модели было принято решение реализовать класс для модели и для её реализации:
|
При разработки модели было принято решение реализовать класс для модели и для её реализации:
|
||||||
@ -103,7 +104,7 @@ class Model {
|
|||||||
$this->realization = $realization;
|
$this->realization = $realization;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getModelElement ($root = null, $stringData = true, $reversiveModelId="") {
|
public function getModelElement ($root = null, $stringData = false, $reversiveModelId="") {
|
||||||
$returnValues = array();
|
$returnValues = array();
|
||||||
$this->realization->ready();
|
$this->realization->ready();
|
||||||
$items = $this->realization->getElement($root);
|
$items = $this->realization->getElement($root);
|
||||||
@ -114,21 +115,25 @@ class Model {
|
|||||||
if ($item['isElement'] == false) {
|
if ($item['isElement'] == false) {
|
||||||
if ($stringData) $returnValues[] = array (
|
if ($stringData) $returnValues[] = array (
|
||||||
"id" => $rootId,
|
"id" => $rootId,
|
||||||
"data" => $item['stringData']
|
"data" => $item['stringData'],
|
||||||
|
"root_id" => $item['id']
|
||||||
);
|
);
|
||||||
else $returnValues[] = array (
|
else $returnValues[] = array (
|
||||||
"id" => $rootId,
|
"id" => $rootId,
|
||||||
"data" => $item['data']
|
"data" => $item['data'],
|
||||||
|
"root_id" => $item['id']
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if ($stringData) $returnValues[] = array (
|
if ($stringData) $returnValues[] = array (
|
||||||
"id" => $rootId,
|
"id" => $rootId,
|
||||||
"data" => $item['stringData']
|
"data" => $item['stringData'],
|
||||||
|
"root_id" => $item['id']
|
||||||
);
|
);
|
||||||
else $returnValues[] = array (
|
else $returnValues[] = array (
|
||||||
"id" => $rootId,
|
"id" => $rootId,
|
||||||
"data" => $item['data']
|
"data" => $item['data'],
|
||||||
|
"root_id" => $item['id']
|
||||||
);
|
);
|
||||||
|
|
||||||
$childElements = $this->getModelElement(
|
$childElements = $this->getModelElement(
|
||||||
@ -139,7 +144,8 @@ class Model {
|
|||||||
foreach ($childElements as $childElement) {
|
foreach ($childElements as $childElement) {
|
||||||
$returnValues[] = array (
|
$returnValues[] = array (
|
||||||
"id" => $childElement['id'],
|
"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']));
|
||||||
|
```
|
||||||
|
Проект завершён.
|
55
1.php/sql/sql-with-create-schema.sql
Normal file
55
1.php/sql/sql-with-create-schema.sql
Normal 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
|
53
1.php/sql/sql-without-create-schema.sql
Normal file
53
1.php/sql/sql-without-create-schema.sql
Normal 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
|
Loading…
Reference in New Issue
Block a user