phrity net uri
v2.1.0
تنفيذ واجهات PSR-7 UriInterface وPSR-17 UriFactoryInterface.
لا شيء يتوهم. مجرد العمل. لأنني بحاجة إلى تطبيق URI غير مرتبط بمراسلة HTTP. وبعض الإضافات. السماح بجميع المخططات الصالحة.
التثبيت مع الملحن؛
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
- تشفير أو فك تشفير تنسيق IDN لمضيف غير ASCIIURI_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 | النسخة الأولية |