phrity net uri
v2.1.0
PSR-7 UriInterface 및 PSR-17 UriFactoryInterface 인터페이스 구현.
멋진 것은 없습니다. 그냥 일하고 있어요. HTTP 메시징에 고정되지 않은 URI 구현이 필요하기 때문입니다. 그리고 몇 가지 추가 사항. 유효한 모든 구성표를 허용합니다.
Composer로 설치하세요.
composer require phrity/net-uri
PSR-7 UriInterface를 구현하고 몇 가지 추가 방법과 옵션을 제공합니다. 자세한 내용은 여기를 참조하세요.
use Phrity Net Uri ;
$ uri = new Uri ( ' http://example.com/path/to/file.html?query1=1#fragment ' );
// PSR-7 getters
$ uri -> getScheme ();
$ uri -> getHost ();
$ uri -> getPort ();
$ uri -> getPath ();
$ uri -> getQuery ();
$ uri -> getFragment ();
$ uri -> getAuthority ();
$ uri -> getUserInfo ();
// PSR-7 setters
$ uri -> withScheme ( ' https ' );
$ uri -> withHost ( ' example2.com ' );
$ uri -> withPort ( 8080 );
$ uri -> withPath ( ' /path/to/another/file.html ' );
$ uri -> withQuery ( ' query2=2 ' );
$ uri -> withFragment ( ' another-fragment ' );
$ uri -> withUserInfo ( ' username ' , ' password ' );
// Additional methods
$ uri -> toString ();
$ uri -> __toString ();
$ uri -> jsonSerialize ();
$ uri -> getQueryItems ();
$ uri -> getQueryItem ( ' query1 ' );
$ uri -> withQueryItems ([ ' query1 ' => ' 1 ' , ' query2 ' => ' 2 ' ]);
$ uri -> withQueryItem ( ' query1 ' , ' 1 ' );
$ uri -> getComponents ();
$ uri -> withComponents ([ ' scheme ' => ' https ' , ' host ' => ' example2.com ' ]);
PSR-17 UriFactoryInterface를 구현하고 몇 가지 추가 방법과 옵션을 제공합니다. 자세한 내용은 여기를 참조하세요.
use Phrity Net UriFactory ;
$ factory = new UriFactory ();
$ factory -> createUri ( ' http://example.com/path/to/file.html ' );
$ factory -> createUriFromInterface ( new GuzzleHttp Psr7 Uri ( ' http://example.com/path/to/file.html ' ));
기본적으로 PSR 표준에 지정된 대로 작동합니다. 동작을 변경하기 위해 몇 가지 수정자를 사용할 수 있습니다. 이는 모든 get
및 with
메소드와 toString
메소드의 마지막 인수로 추가될 수 있습니다.
REQUIRE_PORT
- 기본값인 경우에도 포트 표시를 시도합니다.ABSOLUTE_PATH
- 경로가 절대 형식을 사용하게 합니다. 즉, /
로 시작합니다.NORMALIZE_PATH
- 경로 정규화를 시도합니다.IDN_ENCODE
/ IDN_DECODE
- 비ASCII 호스트에 대한 IDN 형식을 인코딩 또는 디코딩합니다.URI_DECODE
/ URI_ENCODE
/ URI_ENCODE_3986
- URI 구성 요소 인코딩 또는 디코딩 $ uri = new Uri ( ' http://example.com ' );
$ uri -> getPort (Uri:: REQUIRE_PORT ); // => 80
$ uri -> toString (Uri:: REQUIRE_PORT ); // => 'http://example.com:80'
$ uri = new Uri ( ' a/./path/../to//something ' );
$ uri -> getPath (Uri:: ABSOLUTE_PATH | Uri:: NORMALIZE_PATH ); // => '/a/to/something'
$ uri -> toString (Uri:: ABSOLUTE_PATH | Uri:: NORMALIZE_PATH ); // => '/a/to/something'
$ clone = $ uri -> withPath ( ' path/./somewhere/else/.. ' , Uri:: ABSOLUTE_PATH | Uri:: NORMALIZE_PATH );
$ clone -> getPath (); // => '/path/somewhere'
$ uri = new Uri ( ' https://ηßöø必Дあ.com ' );
$ uri -> getHost (Uri:: IDN_ENCODE ); // => 'xn--zca0cg32z7rau82strvd.com'
버전 | PHP | |
---|---|---|
2.1 | ^8.0 | URI 인코딩/디코딩 옵션 |
2.0 | ^8.0 | 쿼리 도우미,([]) 및 getComponents() 메서드, IDN 인코딩/디코드 |
1.3 | ^7.4|^8.0 | |
1.2 | ^7.4|^8.0 | IDNA 수정자 |
1.1 | ^7.4|^8.0 | 포트 필요, 절대 경로, 경로 수정자 정규화 |
1.0 | ^7.4|^8.0 | 초기 버전 |