Biblioteca PHP para el manejo de links y scripts HTML.
- Requisitos
- Instalación
- Clases disponibles
- Uso
- Tests
- Tareas pendientes
- Registro de Cambios
- Contribuir
- Patrocinar
- Licencia
-
Sistema operativo: Linux | Windows.
-
Versiones de PHP: 8.1 | 8.2.
La mejor forma de instalar esta extensión es a través de Composer.
Para instalar PHP Asset library, simplemente escribe:
composer require josantonius/asset
El comando anterior sólo instalará los archivos necesarios, si prefieres descargar todo el código fuente puedes utilizar:
composer require josantonius/asset --prefer-source
También puedes clonar el repositorio completo con Git:
git clone https://github.com/josantonius/php-asset.git
Josantonius\Asset\Asset
Imprime los scripts añadidos para el body:
public function outputBodyScripts(): string;
Imprime los scripts añadidos para el head:
public function outputHeadScripts(): string;
Imprime los links añadidos:
public function outputLinks(): string;
Josantonius\Asset\Facades\Asset
Agregar script en el body:
/**
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script
*/
public static function addBodyScript(
null|bool $async = null,
null|string $crossorigin = null,
null|bool $defer = null,
null|string $fetchpriority = null,
null|string $integrity = null,
null|bool $nomodule = null,
null|string $nonce = null,
null|string $referrerpolicy = null,
null|string $src = null,
null|string $type = null
): BodyScript;
Agregar script en el head:
/**
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script
*/
public static function addHeadScript(
null|bool $async = null,
null|string $crossorigin = null,
null|bool $defer = null,
null|string $fetchpriority = null,
null|string $integrity = null,
null|bool $nomodule = null,
null|string $nonce = null,
null|string $referrerpolicy = null,
null|string $src = null,
null|string $type = null
): HeadScript;
Agregar link:
/**
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link
*/
public static function addLink(
null|string $as = null,
null|string $crossorigin = null,
null|bool $disabled = null,
null|string $fetchpriority = null,
null|string $href = null,
null|string $hreflang = null,
null|string $imagesizes = null,
null|string $imagesrcset = null,
null|string $integrity = null,
null|string $media = null,
null|string $prefetch = null,
null|string $referrerpolicy = null,
null|string $rel = null,
null|string $sizes = null,
null|string $target = null,
null|string $title = null,
null|string $type = null,
): Link;
Imprime los scripts añadidos para el body:
public static function outputBodyScripts(): string;
Imprime los scripts añadidos para el head:
public static function outputHeadScripts(): string;
Imprime los links añadidos:
public static function outputLinks(): string;
Josantonius\Asset\Elements\BodyScript
Agregar script en el body:
/**
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script
*/
public function __construct(
private null|bool $async = null,
private null|string $crossorigin = null,
private null|bool $defer = null,
private null|string $fetchpriority = null,
private null|string $integrity = null,
private null|bool $nomodule = null,
private null|string $nonce = null,
private null|string $referrerpolicy = null,
private null|string $src = null,
private null|string $type = null
);
Josantonius\Asset\Elements\HeadScript
Agregar script en el head:
/**
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script
*/
public function __construct(
private null|bool $async = null,
private null|string $crossorigin = null,
private null|bool $defer = null,
private null|string $fetchpriority = null,
private null|string $integrity = null,
private null|bool $nomodule = null,
private null|string $nonce = null,
private null|string $referrerpolicy = null,
private null|string $src = null,
private null|string $type = null
);
Josantonius\Asset\Elements\Link
Agregar link:
/**
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link
*/
public function __construct(
private null|string $as = null,
private null|string $crossorigin = null,
private null|bool $disabled = null,
private null|string $fetchpriority = null,
private null|string $href = null,
private null|string $hreflang = null,
private null|string $imagesizes = null,
private null|string $imagesrcset = null,
private null|string $integrity = null,
private null|string $media = null,
private null|string $prefetch = null,
private null|string $referrerpolicy = null,
private null|string $rel = null,
private null|string $sizes = null,
private null|string $target = null,
private null|string $title = null,
private null|string $type = null,
);
Ejemplo de uso para esta biblioteca:
use Josantonius\Asset\Elements\BodyScript;
new BodyScript(
src: 'https://example.com/script.js'
);
use Josantonius\Asset\Facades\Asset;
Asset::addBodyScript(
src: 'script.js',
type: 'text/javascript'
);
use Josantonius\Asset\Elements\HeadScript;
new HeadScript(
src: 'script.js',
type: 'module'
);
use Josantonius\Asset\Facades\Asset;
Asset::addHeadScript(
crossorigin: 'anonymous',
defer: true,
integrity: 'sha256-n9+',
src: 'https://example.com/script.js',
type: 'text/javascript'
);
use Josantonius\Asset\Elements\Link;
new Link(
crossorigin: 'anonymous',
href: 'https://example.com/style.css',
integrity: 'sha256-n9+',
media: 'all',
rel: 'stylesheet'
);
use Josantonius\Asset\Facades\Asset;
Asset::addLink(
href: 'https://example.com/style.css',
rel: 'stylesheet'
);
use Josantonius\Asset\Asset;
$asset = new Asset();
echo $asset->outputBodyScripts();
use Josantonius\Asset\Facades\Asset;
echo Asset::outputBodyScripts();
use Josantonius\Asset\Asset;
$asset = new Asset();
echo $asset->outputHeadScripts();
use Josantonius\Asset\Facades\Asset;
echo Asset::outputHeadScripts();
use Josantonius\Asset\Asset;
$asset = new Asset();
echo $asset->outputLinks();
use Josantonius\Asset\Facades\Asset;
echo Asset::outputLinks();
index.php
use Josantonius\Asset\Elements\Link;
use Josantonius\Asset\Elements\BodyScript;
use Josantonius\Asset\Elements\HeadScript;
new BodyScript(src: 'foo.js', async: true);
new BodyScript(src: 'bar.js', type: 'text/javascript');
new HeadScript(src: 'https://example.com/foo.js', type: 'module');
new HeadScript(src: 'https://example.com/bar.js', defer: true);
new Link(href: 'https://example.com/foo.css', rel: 'stylesheet');
new Link(href: 'https://example.com/bar.css', rel: 'stylesheet', media: 'all');
page.html
<?php
use Josantonius\Asset\Asset;
$asset = new Asset();
?>
<html>
<head>
<?= $asset->outputLinks() ?>
<?= $asset->outputHeadScripts() ?>
</head>
<body>
<?= $asset->outputBodyScripts() ?>
</body>
</html>
Resultado:
<html>
<head>
<link href="https://example.com/foo.css" rel="stylesheet">
<link href="https://example.com/bar.css" rel="stylesheet" media="all">
<script src="https://example.com/foo.js" type="module"></script>
<script defer src="https://example.com/bar.js"></script>
</head>
<body>
<script async src="foo.js"></script>
<script src="bar.js" type="text/javascript"></script>
</body>
</html>
index.php
use Josantonius\Asset\Facades\Asset;
Asset::addBodyScript(src: 'foo.js', async: true);
Asset::addBodyScript(src: 'bar.js', type: 'text/javascript');
Asset::addHeadScript(src: 'https://example.com/foo.js', type: 'module');
Asset::addHeadScript(src: 'https://example.com/bar.js', defer: true);
Asset::addLink(href: 'https://example.com/foo.css', rel: 'stylesheet');
Asset::addLink(href: 'https://example.com/bar.css', rel: 'stylesheet', media: 'all');
page.html
<?php
use Josantonius\Asset\Facades\Asset;
?>
<html>
<head>
<?= Asset::outputLinks() ?>
<?= Asset::outputHeadScripts() ?>
</head>
<body>
<?= Asset::outputBodyScripts() ?>
</body>
</html>
Resultado:
<html>
<head>
<link href="https://example.com/foo.css" rel="stylesheet">
<link href="https://example.com/bar.css" rel="stylesheet" media="all">
<script src="https://example.com/foo.js" type="module"></script>
<script defer src="https://example.com/bar.js"></script>
</head>
<body>
<script async src="foo.js"></script>
<script src="bar.js" type="text/javascript"></script>
</body>
</html>
Para ejecutar las pruebas necesitarás Composer y seguir los siguientes pasos:
git clone https://github.com/josantonius/php-asset.git
cd php-asset
composer install
Ejecutar pruebas unitarias con PHPUnit:
composer phpunit
Ejecutar pruebas de estándares de código con PHPCS:
composer phpcs
Ejecutar pruebas con PHP Mess Detector para detectar inconsistencias en el estilo de codificación:
composer phpmd
Ejecutar todas las pruebas anteriores:
composer tests
- 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)
- Añadir otros elementos HTML
- Añadir la función de agregar código entre las etiquetas
<script>
Los cambios detallados de cada versión se documentan en las notas de la misma.
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! ❤️
Si este proyecto te ayuda a reducir el tiempo de desarrollo, puedes patrocinarme para apoyar mi trabajo 😊
Este repositorio tiene una licencia MIT License.
Copyright © 2016-actualidad, Josantonius