Skip to content

Commit e4622dc

Browse files
committed
Create UriInterface.php
1 parent 7c073cd commit e4622dc

File tree

1 file changed

+146
-0
lines changed

1 file changed

+146
-0
lines changed

src/Interfaces/UriInterface.php

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
<?php
2+
/**
3+
* Интерфейс uri.
4+
* @package evas-php\evas-http
5+
* @author Egor Vasyakin <[email protected]>
6+
* @link http://tools.ietf.org/html/rfc3986 (the URI specification)
7+
*/
8+
namespace Evas\Http\Interfaces;
9+
10+
interface UriInterface
11+
{
12+
/**
13+
* Получение схемы uri.
14+
* @return string|null uri scheme
15+
*/
16+
public function getScheme(): ?string;
17+
18+
/**
19+
* Получение authority компонента uri.
20+
* Формат: "[user-info@]host[:port]"
21+
* @return string|null uri authority
22+
*/
23+
public function getAuthority(): ?string;
24+
25+
/**
26+
* Получение компонента пользовательской информации uri.
27+
* Формат: "username[:password]"
28+
* @return string|null uri userinfo
29+
*/
30+
public function getUserInfo(): ?string;
31+
32+
/**
33+
* Получение хоста uri.
34+
* @return string|null uri host
35+
*/
36+
public function getHost(): ?string;
37+
38+
/**
39+
* Получение порта uri.
40+
* @return int|null uri port
41+
*/
42+
public function getPort(): ?int;
43+
44+
/**
45+
* Получение пути uri.
46+
* @return string|null uri path
47+
*/
48+
public function getPath(): ?string;
49+
50+
/**
51+
* Получение query строки uri.
52+
* @return string|null uri query string
53+
*/
54+
public function getQuery(): ?string;
55+
56+
/**
57+
* Получение fragment компонента uri
58+
* @return string|null uri fragment
59+
*/
60+
public function getFragment(): ?string;
61+
62+
/**
63+
* Установка схемы uri.
64+
* @param string схема uri
65+
* @return self
66+
*/
67+
public function withScheme(string $scheme): UriInterface;
68+
69+
/**
70+
* Установка информации пользователя uri.
71+
* @param string имя пользователя
72+
* @param null|string пароль
73+
* @return self
74+
*/
75+
public function withUserInfo(string $user, string $password = null): UriInterface;
76+
77+
/**
78+
* Установка хоста uri.
79+
* @param string хост
80+
* @return self
81+
*/
82+
public function withHost(string $host): UriInterface;
83+
84+
/**
85+
* Установка порта uri.
86+
* @param null|int порт или null для сброса на порт по умолчанию
87+
* @return self
88+
*/
89+
public function withPort(int $port = null): UriInterface;
90+
91+
/**
92+
* Установка пути uri.
93+
*
94+
* Путь может быть 1 - пустым, 2 - абсолютным (начинается с косой черты)
95+
* или 3 - без корня (не начинающийся с косой черты).
96+
* Реализации ДОЛЖНЫ поддерживать все три синтаксиса.
97+
*
98+
* Если путь предназначен для определения домена, а не пути, он должен
99+
* начинаться с косой черты ("/"). Предполагается, что пути, не
100+
* начинающиеся с косой черты («/»), относятся к некоторому базовому пути,
101+
* известному приложению или потребителю.
102+
*
103+
* @param string|null путь
104+
* @return self
105+
*/
106+
public function withPath(string $path = null): UriInterface;
107+
108+
/**
109+
* Установка query строки uri.
110+
* @param string|null query строка
111+
* @return self
112+
*/
113+
public function withQuery(string $query = null): UriInterface;
114+
115+
/**
116+
* Установка query строки uri из маппинга.
117+
* @param array|null маппинг свойств query
118+
* @return self
119+
*/
120+
public function withQueryParams(array $params = null): UriInterface;
121+
122+
/**
123+
* Установка фрагмента uri.
124+
* @param string|null фрагмент uri
125+
* @return self
126+
*/
127+
public function withFragment(string $fragment = null): UriInterface;
128+
129+
/**
130+
* Получение uri строки.
131+
* - Если схема присутствует, она ДОЛЖНА быть дополнена суффиксом ":".
132+
* - Если авторитет присутствует, он ДОЛЖЕН иметь префикс "//".
133+
* - Путь можно объединять без разделителей. Но есть два случая, когда путь
134+
* должен быть скорректирован, чтобы сделать ссылку URI действительной,
135+
* поскольку PHP не позволяет генерировать исключение в __toString ():
136+
* - Если путь не имеет корневого каталога и есть полномочия, путь
137+
* ДОЛЖЕН иметь префикс "/".
138+
* - Если путь начинается с более чем одного символа "/" и права доступа
139+
* отсутствуют, начальная косая черта ДОЛЖНА быть уменьшена до единицы.
140+
* - Если запрос присутствует, он ДОЛЖЕН иметь префикс «?».
141+
* - Если фрагмент присутствует, он ДОЛЖЕН иметь префикс "#".
142+
* @see http://tools.ietf.org/html/rfc3986#section-4.1
143+
* @return string
144+
*/
145+
public function __toString();
146+
}

0 commit comments

Comments
 (0)