zero-to-prod / url
将URL解析为类。
v71.2.4
2024-09-08 16:50 UTC
Requires
- php: ^7.1
- zero-to-prod/data-model: ^71.0
- zero-to-prod/dynamic-setter: ^71.0
Requires (Dev)
- phpunit/phpunit: ^7.0
Suggests
- zero-to-prod/transformable: Transform a class into different types.
README
使用类解析和访问URL组件。
安装
通过Composer安装此包
composer require zerotoprod/url
用法
使用from()静态方法将数组键映射到类属性。
建议您通过\Zerotoprod\Url\Url类扩展自己的Url类。
class Url extends \Zerotoprod\Url\Url { } $url = Url::from( parse_url('example.com') ); $url->host // 'example.com' // Passing an array $url = Url::new() ->set_host('example.com') ->set_scheme('https') ->set_path('/search') ->set_query('q=openai'); $url->host; // 'example.com'
辅助方法
Url类包含多个辅助方法,用于使用特定方案和端口构建URL。
<?php use Zerotoprod\Url\Url; // Create a new URL instance and set the host $url = Url::new()->set_host('example.com'); // Using the toProtocol method with custom schemes and ports echo $url->toProtocol('http'); // Outputs: "http://example.com:8080" echo $url->toProtocol('https', 8081); // Outputs: "https://example.com:8081" // Using different helper methods to generate URLs for various schemes echo $url->toSsl(); // Outputs: "ssl://example.com:443" echo $url->toFtp(); // Outputs: "ftp://example.com:21" echo $url->toFtps(); // Outputs: "ftps://example.com:990" echo $url->toSftp(); // Outputs: "sftp://example.com:22" echo $url->toTcp(); // Outputs: "tcp://example.com:80" echo $url->toUdp(); // Outputs: "udp://example.com:53" echo $url->toTls(); // Outputs: "tls://example.com:443" echo $url->toWs(); // Outputs: "ws://example.com:80" echo $url->toWss(); // Outputs: "wss://example.com:443" echo $url->toPop3(); // Outputs: "pop3://example.com:110" echo $url->toImap(); // Outputs: "imap://example.com:143" echo $url->toSmtp(); // Outputs: "smtp://example.com:25" // Optionally, you can pass a custom port to any of these methods echo $url->toSsl(8443); // Outputs: "ssl://example.com:8443" echo $url->toFtp(2121); // Outputs: "ftp://example.com:2121"
建议特性
可解析的
可解析特性提供了一个解析URL字符串并确保它以支持的协议开始的方法。这在你想要处理各种类型的URL并确保在处理之前它们符合特定格式时非常有用。
安装
可解析特性包含在此包中,因此无需额外安装。
用法
要在你的类中使用Zerotoprod\Url\Parsable特性,只需包含它
class Url extends \Zerotoprod\Url\Url { use \Zerotoprod\Url\Parsable; } Url::parse('example.com'); // Defaults to 'https://example.com' Url::parse('example.com', 'custom://', ['http://', 'custom://']);
可转换的
可转换特性提供了将对象属性转换为数组或JSON字符串的方法。这特别适用于序列化你的数据模型。
composer require zerotoprod/transformable
用法
要在你的类中使用Zerotoprod\Transformable\Transformable特性,只需包含它
class Url extends \Zerotoprod\Url\Url { use \Zerotoprod\Transformable\Transformable; } $Url = Url::from( parse_url('example.com') ); $array = $Url->toArray(); $json = $Url->toJson();