upload files into repos
This commit is contained in:
parent
e816c73b5e
commit
804419317d
@ -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']));
|
||||
?>
|
@ -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);
|
||||
@ -16,22 +16,26 @@ class Model {
|
||||
$rootId = $reversiveModelId == "" ? (string)$logicItemId : $reversiveModelId . "." . $logicItemId;
|
||||
if ($item['isElement'] == false) {
|
||||
if ($stringData) $returnValues[] = array (
|
||||
"id" => $rootId,
|
||||
"data" => $item['stringData']
|
||||
"id" => $rootId,
|
||||
"data" => $item['stringData'],
|
||||
"root_id" => $item['id']
|
||||
);
|
||||
else $returnValues[] = array (
|
||||
"id" => $rootId,
|
||||
"data" => $item['data']
|
||||
"id" => $rootId,
|
||||
"data" => $item['data'],
|
||||
"root_id" => $item['id']
|
||||
);
|
||||
}
|
||||
else {
|
||||
if ($stringData) $returnValues[] = array (
|
||||
"id" => $rootId,
|
||||
"data" => $item['stringData']
|
||||
"id" => $rootId,
|
||||
"data" => $item['stringData'],
|
||||
"root_id" => $item['id']
|
||||
);
|
||||
else $returnValues[] = array (
|
||||
"id" => $rootId,
|
||||
"data" => $item['data']
|
||||
"id" => $rootId,
|
||||
"data" => $item['data'],
|
||||
"root_id" => $item['id']
|
||||
);
|
||||
|
||||
$childElements = $this->getModelElement(
|
||||
@ -41,8 +45,9 @@ class Model {
|
||||
);
|
||||
foreach ($childElements as $childElement) {
|
||||
$returnValues[] = array (
|
||||
"id" => $childElement['id'],
|
||||
"data" => $childElement['data']
|
||||
"id" => $childElement['id'],
|
||||
"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, которая будет выводить информацию из модели о его родителях и наследниках. При этом, дополнительно предусмотреть возможность вывода наследников отдельного родителя, введённого в параметрах *(это условие не обязательно)*
|
||||
# Реализация
|
||||
|
||||
## Разработка модели
|
||||
Поскольку вывод информации происходит из абстрактной модели, нам необходимо сделать собственную реализацию модели. Далее, обеспечить модульность, чтобы можно было менять практическую реализацию модели *(например, заменить запросы к БД на запросы к файловой системе и т.д.)*.
|
||||
При разработки модели было принято решение реализовать класс для модели и для её реализации:
|
||||
@ -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);
|
||||
@ -113,22 +114,26 @@ class Model {
|
||||
$rootId = $reversiveModelId == "" ? (string)$logicItemId : $reversiveModelId . "." . $logicItemId;
|
||||
if ($item['isElement'] == false) {
|
||||
if ($stringData) $returnValues[] = array (
|
||||
"id" => $rootId,
|
||||
"data" => $item['stringData']
|
||||
"id" => $rootId,
|
||||
"data" => $item['stringData'],
|
||||
"root_id" => $item['id']
|
||||
);
|
||||
else $returnValues[] = array (
|
||||
"id" => $rootId,
|
||||
"data" => $item['data']
|
||||
"id" => $rootId,
|
||||
"data" => $item['data'],
|
||||
"root_id" => $item['id']
|
||||
);
|
||||
}
|
||||
else {
|
||||
if ($stringData) $returnValues[] = array (
|
||||
"id" => $rootId,
|
||||
"data" => $item['stringData']
|
||||
"id" => $rootId,
|
||||
"data" => $item['stringData'],
|
||||
"root_id" => $item['id']
|
||||
);
|
||||
else $returnValues[] = array (
|
||||
"id" => $rootId,
|
||||
"data" => $item['data']
|
||||
"id" => $rootId,
|
||||
"data" => $item['data'],
|
||||
"root_id" => $item['id']
|
||||
);
|
||||
|
||||
$childElements = $this->getModelElement(
|
||||
@ -138,8 +143,9 @@ class Model {
|
||||
);
|
||||
foreach ($childElements as $childElement) {
|
||||
$returnValues[] = array (
|
||||
"id" => $childElement['id'],
|
||||
"data" => $childElement['data']
|
||||
"id" => $childElement['id'],
|
||||
"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