Get access to over 200,000 icons from more than 150 open source icon sets directly from your php files!
Thanks to Iconify ❤️
composer require yassinedoghri/php-icons
Run the following command to initialize the configuration file:
vendor/bin/php-icons init
This will prompt you to create a php-icons.php
config file in the root of your
project. See config reference for more info.
icon(string $iconKey, array $attributes)
functionUse the global icon(…)
function in your view files with the icon key
({prefix}:{icon}
) as parameter:
{prefix}
: is the
icon set prefix{name}
: is the
icon nameecho icon('material-symbols:bolt');
// <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24">
// <path fill="currentColor" d="m8 22l1-7H4l9-13h2l-1 8h6L10 22z"/>
// </svg>
👉 To add attributes, use the second parameter or call the attr()
or
attributes()
methods:
echo icon('material-symbols:bolt', [
'class' => 'text-2xl',
'style' => 'color: yellow;'
]);
// <svg class="text-2xl" style="color: yellow;" […]>…</svg>
echo icon('material-symbols:bolt')
->attr('class', 'text-2xl')
->attr('style', 'color: yellow;');
// <svg class="text-2xl" style="color: yellow;" […]>…</svg>
echo icon('material-symbols:bolt')
->attributes([
'class' => 'text-2xl',
'style' => 'color: yellow;'
]);
// <svg class="text-2xl" style="color: yellow;" […]>…</svg>
[!TIP]
Find and copy the icon keys of popular open source icon sets from Iconify's index.
[!IMPORTANT]
When first defining icons, a placeholder (�
by default) will be displayed.\ Make sure to run thescan
command to load the SVGs.
vendor/bin/php-icons scan
The scan
command will perform a static analysis of all PHP files in your
configured paths to identify icon keys ({prefix}:{name}
) and
download the corresponding icons.
Using the icon
identifier by default:
icon(…)
functions
echo icon('ri:php-fill') // identified "ri:php-fill"
@icon(…)
annotations in comments
// @icon('ri:heart-fill') --> identified "ri:heart-fill"
# @icon('ri:home-fill') --> identified "ri:home-fill"
/*
* @icon('ri:user-fill') --> identified "ri:user-fill"
* @icon('ri:group-fill') --> identified "ri:group-fill"
*/
Your config file is loaded by both the php-icons
CLI tool and PHPIcons class,
it should look like this:
<?php
declare(strict_types=1);
use PHPIcons\Config\PHPIconsConfig;
return PHPIconsConfig::configure()
->withPaths([
__DIR__ . '/src'
])
->withDefaultPrefix('')
->withPlaceholder('�');
withPaths([])
List of paths to your source files. PHP files will be parsed and scanned for discovering the icons you have defined.
withAPIHosts([])
Iconify API hosts to query for downloading svg icons. Starts by querying the first host, the rest is used as backup.
Defaults to Iconify's public hosts:
["https://api.iconify.design","https://api.simplesvg.com", "https://api.unisvg.com"]
withLocalIconSets([])
If you have custom icons, php-icons can look them up locally in your file system instead of calling for the Iconify API.
[!IMPORTANT]
php-icons will look for{name}.svg
files in your local icon sets
Takes in an associative array with the icon set prefix as the key and its path as value.
my-custom-set/
├── heart.svg
├── rocket.svg
├── star.svg
└── user.svg
// in your config file
->withLocalIconSets([
'custom' => '/path/to/my-custom-set',
])
// ✅ ALL GOOD
echo icon('custom:heart');
echo icon('custom:rocket');
echo icon('custom:star');
echo icon('custom:user');
// ❌ ICONS NOT FOUND
echo icon('custom:banana');
echo icon('custom:key');
withDefaultPrefix('')
Default icon set prefix to use when none is set.
With material-symbols
set as default prefix:
// this
echo icon('bolt');
// same as this
echo icon('material-symbols:bolt');
withDefaultIcon()
Default icon to use when an icon has not been found.
Takes in an icon key {prefix}:{name}
. If a prefix is not set, the default
prefix will be used instead.
withDefaultIconPerSet([])
Default icon to use when an icon has not been found in a set.
Takes in an associative array, with the key being the icon set prefix, and the value being the default icon.
withPlaceholder('�')
String to show when icon is not found or unknown.
Defaults to �
(REPLACEMENT CHARACTER).
withIdentifiers([])
Function or method names to match for identifying icon keys in your source files.
Defaults to ['icon']
.
> vendor/bin/php-icons
_ _
_ __ | |__ _ __ (_) ___ ___ _ __ ___
| '_ \| '_ \| '_ \ | |/ __/ _ \| '_ \/ __|
| |_) | | | | |_) | | | (_| (_) | | | \__ \
| .__/|_| |_| .__/ |_|\___\___/|_| |_|___/
|_| |_|
A convenient PHP library to render svg icons
----------------------------------------------
PHPIcons, version 1.0.0.0-dev
Commands:
*
init i Configure PHPIcons interactively
scan s Scans source files and loads icons
Run `<command> --help` for specific help
This wouldn't have been possible without the awesome work from the Iconify team and designers that maintain the many open source icon sets.
Inspired by astro-icon, blade-icons and rector.
Code released under the MIT License.
Copyright (c) 2024-present, Yassine Doghri (@yassinedoghri).