将URL解析为类。

v71.2.4 2024-09-08 16:50 UTC

This package is auto-updated.

Last update: 2024-09-08 16:50:56 UTC


README

Repo Latest Version on Packagist test Downloads

使用类解析和访问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();