Skip to content

Latest commit

 

History

History
790 lines (490 loc) · 14.2 KB

README.md

File metadata and controls

790 lines (490 loc) · 14.2 KB

PHP URL library

Latest Stable Version License Total Downloads CI CodeCov PSR1 PSR4 PSR12

English version

Biblioteca de PHP para acceder a la información de una URL.

Proporciona un reemplazo mejorado para el acceso a los componentes de una URL que ofrecen las funciones parse_url y pathinfo de PHP.

Esta biblioteca no formatea la URL proporcionada, sólo facilita el acceso a los componentes. Para algo más avanzado puede usar algo como league/uri-components.



Requisitos

  • Sistema operativo: Linux | Windows.

  • Versiones de PHP: 8.1 | 8.2.

Instalación

La mejor forma de instalarla es a través de Composer.

Para instalar PHP URL library, simplemente escribe:

composer require josantonius/url

El comando anterior sólo instalará los archivos necesarios, si prefieres descargar todo el código fuente puedes utilizar:

composer require josantonius/url --prefer-source

También puedes clonar el repositorio completo con Git:

git clone https://github.com/josantonius/php-url.git

Clases disponibles

Clase Url

Josantonius\Url\Url

Crear una nueva instancia:

/**
 * Si no se proporciona ninguna URL, se generará la URL de la página actual.
 * 
 * La URL generada excluirá los puertos 80 y 443 e incluirá el resto.
 *
 * @throws UrlException si la URL no es válida.
 */
public function __construct(null|string $url = null);

Obtiene la autoridad:

/**
 * Autoridad en formato "[user-info@][host][:port]".
 *
 * @var string Elemento o cadena vacía.
 */
public readonly string $authority;

Obtiene la URL base:

/**
 * URL base, en formato "[scheme:][//domain][:port]".
 *
 * @var string Elemento o cadena vacía.
 */
public readonly string $base;

Obtiene el nombre base de la ruta:

/**
 * El nombre base de la ruta en formato "[filename][.extension]".
 *
 * @var string Nombre base de la ruta o cadena vacía.
 */
public readonly string $basename;

Obtiene el nombre del directorio de la ruta:

/**
 * Nombre del directorio de la ruta, en formato "[dirname]".
 *
 * @var string Nombre del directorio de la ruta o cadena vacía.
 */
public readonly string $dirname;

Obtiene la extensión del nombre base de la ruta:

/**
 * La extensión del nombre base de la ruta en formato "[extension]".
 *
 * @var string Extensión del nombre base de la ruta o cadena vacía.
 */
public readonly string $extension;

Obtiene el nombre del archivo de la ruta:

/**
 * Nombre del archivo de la ruta en formato "[nombre de archivo]".
 *
 * @var string Nombre del archivo de la ruta o cadena vacía.
 */
public readonly string $filename;

Obtiene el fragmento:

/**
 * Fragmento en formato "[fragment]".
 *
 * @var string Elemento o cadena vacía.
 */
public readonly string $fragment;

Obtiene la URL completa:

public readonly string $full;

Obtiene el fragmento con hash:

/**
 * Fragmento con hash en formato "[#fragment]".
 *
 * @var string Elemento o cadena vacía.
 */
public readonly string $hash;

Obtiene el dominio:

/**
 * Dominio en formato "[subdomain.][domain][.tld]".
 *
 * @var string Elemento o cadena vacía.
 */
public readonly string $host;

Obtiene la ruta:

/**
 * Ruta en formato "[path]".
 *
 * @var string Elemento o cadena vacía.
 */
public readonly string $path;

Obtiene los parámetros de la consulta:

/**
 * Parámetros de la consulta en formato array.
 *
 * @var array<string, mixed> Parámetros de la consulta o cadena vacía.
 */
public readonly array $parameters;

Obtiene la contraseña:

/**
 * Contraseña en formato "[password]".
 *
 * @var string Elemento o cadena vacía.
 */
public readonly string $password;

Obtiene el puerto:

/**
 * Puerto en formato "[port]".
 *
 * @var string The port as an integer or empty string if it does not exist.
 */
public readonly int|string $port;

Obtiene el esquema:

/**
 * Esquema en formato "[scheme]".
 *
 * @var string Elemento o cadena vacía.
 */
public readonly string $scheme;

Obtiene los segmentos de la ruta:

/**
 * Segmentos de la ruta URL en formato array.
 *
 * @var string[] Segmentos de la ruta URL o cadena vacía.
 */
public readonly array $segments;

Obtiene la consulta:

/**
 * Consulta en formato "[query]".
 *
 * @var string Elemento o cadena vacía.
 */
public readonly string $query;

Obtiene la información de usuario:

/**
 * Información de usuario en formato "[username][:password]".
 *
 * @var string Elemento o cadena vacía.
 */
public readonly string $userInfo;

Obtiene el nombre de usuario:

/**
 * Nombre de usuario en formato "[username]".
 *
 * @var string Elemento o cadena vacía.
 */
public readonly string $username;

Uso

Ejemplo de uso de esta biblioteca:

Crear una nueva instancia utilizando la URL actual

use Josantonius\Url\Url;

$url = new Url();

Crear una nueva instancia utilizando una URL personalizada

use Josantonius\Url\Url;

$url = new Url('https://domain.com');

Obtiene la autoridad

use Josantonius\Url\Url;

$url = new Url(); // https://domain.com

$url->authority;  // "domain.com"


$url = new Url('https://user:[email protected]:90/en/');

$url->authority; // "user:[email protected]:90"


$url = new Url('https://user:[email protected]/en/');

$url->authority; // "user:[email protected]"


$url = new Url('https://sub.domain.com/en/');

$url->authority; // "sub.domain.com"

Obtiene la URL base

use Josantonius\Url\Url;

$url = new Url(); // https://user:[email protected]:80/en/

$url->base; // "https://domain.com"


$url = new Url('https://domain.com:80/?tag=bug');

$url->base; // "https://domain.com:80"


$url = new Url('https://domain.com/en/');

$url->base; // "https://domain.com"

Obtiene el nombre base de la ruta

use Josantonius\Url\Url;

$url = new Url(); // https://domain.com/search.php

$url->basename; // "search.php"


$url = new Url('https://domain.com/en/web/docs/search.php?tag=bug');

$url->basename; // "search.php"


$url = new Url('https://domain.com/en/web/docs?tag=bug');

$url->basename; // "docs"

Obtiene el nombre del directorio de la ruta

use Josantonius\Url\Url;

$url = new Url(); // https://domain.com/search.php

$url->dirname; // "/"


$url = new Url('https://domain.com/en/web/docs/search.php?tag=bug');

$url->dirname; // "/en/web/docs"


$url = new Url('https://domain.com/en/web/docs?tag=bug');

$url->dirname; // "/en/web"

Obtiene la extensión del nombre base de la ruta

use Josantonius\Url\Url;

$url = new Url(); // https://domain.com/search.php

$url->extension; // "php"


$url = new Url('https://domain.com/en/web/docs/search.php?tag=bug');

$url->extension; // "php"


$url = new Url('https://domain.com/en/web/docs?tag=bug');

$url->extension; // ""

Obtiene el nombre del archivo de la ruta

use Josantonius\Url\Url;

$url = new Url(); // https://domain.com/search.php

$url->filename; // "search"


$url = new Url('https://domain.com/en/web/docs/search.php?tag=bug');

$url->filename; // "search"


$url = new Url('https://domain.com/docs?tag=bug');

$url->filename; // "docs"

Obtiene el fragmento

use Josantonius\Url\Url;

$url = new Url(); // https://domain.com#top

$url->fragment; // "top"


$url = new Url('https://domain.com/en/web/docs#top');

$url->fragment; // "top"


$url = new Url('https://domain.com');

$url->fragment; // ""

Obtiene la URL completa

use Josantonius\Url\Url;

$url = new Url(); // https://domain.com:80

$url->full;  // "https://domain.com"


$url = new Url('https://user:[email protected]:90/en/');

$url->full; // "https://user:[email protected]:90/en/"

Obtiene el fragmento con hash

use Josantonius\Url\Url;

$url = new Url(); // https://domain.com#top

$url->hash; // "#top"


$url = new Url('https://domain.com/en/web/docs#top');

$url->hash; // "#top"


$url = new Url('https://domain.com');

$url->hash; // ""

Obtiene el dominio

use Josantonius\Url\Url;

$url = new Url(); // https://sub.domain.com

$url->host; // "sub.domain.com"


$url = new Url('https://sub.domain.com/en/web/docs#top');

$url->host; // "sub.domain.com"


$url = new Url('https://domain.com');

$url->host; // "domain.com"


$url = new Url('https://localhost');

$url->host; // "localhost"

Obtiene la ruta

use Josantonius\Url\Url;

$url = new Url(); // https://domain.com/en

$url->path; // "/en/web/docs/search.php"


$url = new Url('https://domain.com/en/web/docs/search.php');

$url->path; // "/en/web/docs/search.php"


$url = new Url('https://domain.com/en/web/docs/');

$url->path; // "/en/web/docs/"


$url = new Url('https://domain.com/en?tag=bug');

$url->path; // "/en"


$url = new Url('https://domain.com?tag=bug');

$url->path; // ""

Obtiene los parámetros de la consulta

use Josantonius\Url\Url;

$url = new Url(); // https://domain.com/en?tag=bug&order=asc#top

$url->parameters; // ["tag" => "bug", "order" => "asc"]


$url = new Url('https://domain.com/en/web/docs/search.php');

$url->parameters; // ""

Obtiene la contraseña

use Josantonius\Url\Url;

$url = new Url(); // https://:[email protected]

$url->password; // "pass"


$url = new Url('https://user:[email protected]');

$url->password; // "pass"


$url = new Url('https://[email protected]');

$url->password; // ""

Obtiene el puerto

use Josantonius\Url\Url;

$url = new Url(); // https://domain.com:90

$url->port; // 90


$url = new Url(); // https://domain.com:80

$url->port; // ""


$url = new Url(); // https://domain.com:443

$url->port; // ""


$url = new Url('https://domain.com:80/en/');

$url->port; // 80


$url = new Url('https://domain.com:443/en/');

$url->port; // 443


$url = new Url('https://domain.com/en/');

$url->port; // ""

Obtiene el esquema

use Josantonius\Url\Url;

$url = new Url(); // http://domain.com

$url->scheme; // "http"


$url = new Url('https://domain.com');

$url->scheme; // "https"

Obtiene los segmentos de la ruta

use Josantonius\Url\Url;

$url = new Url(); // https://domain.com?tag=bug

$url->segments; // []


$url = new Url('https://domain.com/en/web/docs/search.php');

$url->segments; // ['en', 'web', 'docs', 'search.php']

Obtiene la consulta

use Josantonius\Url\Url;

$url = new Url(); // https://domain.com?tag=bug

$url->query; // "tag=bug"


$url = new Url('https://domain.com?tag=bug&order=asc#top');

$url->query; // "tag=bug&order=asc"


$url = new Url('https://domain.com');

$url->query; // ""

Obtiene la información de usuario

use Josantonius\Url\Url;

$url = new Url(); // https://[email protected]

$url->userInfo; // "user"


$url = new Url('https://:[email protected]');

$url->userInfo; // ":pass"


$url = new Url('https://user:[email protected]');

$url->userInfo; // "user:pass"


$url = new Url('https://domain.com');

$url->userInfo; // ""

Obtiene el nombre de usuario

use Josantonius\Url\Url;

$url = new Url(); // https://[email protected]

$url->username; // "user"


$url = new Url('https://:[email protected]');

$url->username; // ""


$url = new Url('https://user:[email protected]');

$url->username; // "user"


$url = new Url('https://domain.com');

$url->username; // ""

Tests

Para ejecutar las pruebas necesitarás Composer y seguir los siguientes pasos:

git clone https://github.com/josantonius/php-url.git
cd php-url
composer install

Ejecutar pruebas unitarias con PHPUnit:

composer phpunit

Ejecutar pruebas de estándares de código con PHPCS:

composer tests

Ejecutar pruebas con PHP Mess Detector para detectar inconsistencias en el estilo de codificación:

composer phpmd

Ejecutar todas las pruebas anteriores:

composer tests

Tareas pendientes

  • Añadir nueva funcionalidad
  • Mejorar pruebas
  • Mejorar documentación
  • Mejorar la traducción al inglés en el archivo README
  • Refactorizar código para las reglas de estilo de código deshabilitadas (ver phpmd.xml y phpcs.xml)

Registro de Cambios

Los cambios detallados de cada versión se documentan en las notas de la misma.

Contribuir

Por favor, asegúrate de leer la Guía de contribución antes de hacer un pull request, comenzar una discusión o reportar un issue.

¡Gracias por colaborar! ❤️

Patrocinar

Si este proyecto te ayuda a reducir el tiempo de desarrollo, puedes patrocinarme para apoyar mi trabajo 😊

Licencia

Este repositorio tiene una licencia MIT License.

Copyright © 2017-actualidad, Josantonius