-
Notifications
You must be signed in to change notification settings - Fork 0
/
chapter10facade.php
62 lines (49 loc) · 1.22 KB
/
chapter10facade.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
require __DIR__ .'/vendor/autoload.php';
use Main\Zandstra\Chapter10\Facade\ProductFacade;
function getProductFileLines(string $file): array
{
return file($file);
}
function getProductObjectFromId(string $id, string $productName): Product
{
//поиск в некоторой базе данных
return new Product($id, $productName);
}
function getNameFromLine(string $line): string
{
if (preg_match("/.*-(.*)\s\d+/", $line, $array))
{
return str_replace('_', ' ', $array[1]);
}
return '';
}
function getIDFromLine($line): int | string
{
if (preg_match("/^(\d{1,3})-/", $line, $array))
{
return $array[1];
}
return -1;
}
class Product
{
public string $id;
public string $name;
public function __construct(string $id, string $name)
{
$this->id = $id;
$this->name = $name;
}
}
$lines = getProductFileLines(__DIR__ . '/test1.txt');
$objects = [];
foreach ($lines as $line) {
$id = getIDFromLine($line);
$name = getNameFromLine($line);
$objects[$id] = getProductObjectFromId($id, $name);
}
print_r($objects);
$facade = new ProductFacade(__DIR__ . '/test1.txt');
$objects = $facade->getProduct('234');
print_r($objects);