phrity net uri
v2.1.0
Implementasi antarmuka UriInterface PSR-7 dan UriFactoryInterface PSR-17.
Tidak ada yang mewah. Hanya bekerja. Karena saya memerlukan implementasi URI yang tidak tertanam dalam pesan HTTP. Dan beberapa tambahan. Izinkan semua skema yang valid.
Instal dengan Komposer;
composer require phrity/net-uri
Menerapkan PSR-7 UriInterface dan menyediakan beberapa metode dan opsi tambahan. Info lebih lanjut di sini.
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 ' ]);
Menerapkan PSR-17 UriFactoryInterface dan menyediakan beberapa metode dan opsi tambahan. Info lebih lanjut di sini.
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 ' ));
Di luar kotak, ia akan berperilaku seperti yang ditentukan oleh standar PSR. Untuk mengubah perilaku, ada beberapa pengubah yang tersedia. Ini dapat ditambahkan sebagai argumen terakhir di semua metode get
dan with
, ditambah metode toString
.
REQUIRE_PORT
- Mencoba menampilkan port, meskipun defaultABSOLUTE_PATH
- Akan menyebabkan path menggunakan bentuk absolut, yaitu dimulai dengan /
NORMALIZE_PATH
- Akan mencoba menormalkan jalurIDN_ENCODE
/ IDN_DECODE
- Menyandikan atau mendekode format IDN untuk host non-ASCIIURI_DECODE
/ URI_ENCODE
/ URI_ENCODE_3986
- Menyandikan atau mendekode komponen 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'
Versi | PHP | |
---|---|---|
2.1 | ^8.0 | Opsi penyandian/dekode URI |
2.0 | ^8.0 | Pembantu kueri, dengan metode([]) dan getComponents(), encode/decode IDN |
1.3 | ^7.4|^8.0 | |
1.2 | ^7.4|^8.0 | pengubah IDNA |
1.1 | ^7.4|^8.0 | Memerlukan port, Jalur absolut, Normalisasi pengubah jalur |
1.0 | ^7.4|^8.0 | Versi awal |