1. Go to this page and download the library: Download tobento/service-icon library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
tobento / service-icon example snippets
use Tobento\Service\Icon\IconInterface;
use Tobento\Service\Icon\IconFactory;
$icon = (new IconFactory())->createIconFromHtml('download', '<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 100 100"><path d="M0,100H100V90H0ZM100,50H66.67V0H33.33V50H0L50,83.33Z"/></svg>');
var_dump($icon instanceof IconInterface);
// bool(true)
use Tobento\Service\Icon\Icon;
use Tobento\Service\Icon\IconInterface;
use Tobento\Service\Tag\Tag;
use Tobento\Service\Tag\TagInterface;
use Tobento\Service\Tag\Attributes;
$icon = new Icon(
name: 'download',
tag: new Tag(
name: 'svg',
html: '<path d="M0,100H100V90H0ZM100,50H66.67V0H33.33V50H0L50,83.33Z"/>',
attributes: new Attributes([
'xmlns' => 'http://www.w3.org/2000/svg',
'width' => '20',
'height'=> '20',
'viewBox' => '0 0 100 100',
]),
),
labelTag: null, // null|TagInterface
parentTag: null, // null|TagInterface
);
var_dump($icon instanceof IconInterface);
// bool(true)
use Tobento\Service\Icon\IconFactoryInterface;
use Tobento\Service\Icon\IconFactory;
$iconFactory = new IconFactory();
var_dump($iconFactory instanceof IconFactoryInterface);
// bool(true)
use Tobento\Service\Icon\IconInterface;
use Tobento\Service\Icon\CreateIconException;
use Tobento\Service\Tag\Tag;
use Tobento\Service\Tag\TagInterface;
use Tobento\Service\Tag\Attributes;
try {
$icon = $iconFactory->createIcon(
name: 'download',
tag: new Tag(
name: 'svg',
html: '<path d="M0,100H100V90H0ZM100,50H66.67V0H33.33V50H0L50,83.33Z"/>',
attributes: new Attributes([
'xmlns' => 'http://www.w3.org/2000/svg',
'width' => '20',
'height'=> '20',
'viewBox' => '0 0 100 100',
]),
),
labelTag: null, // null|TagInterface
parentTag: null, // null|TagInterface
);
var_dump($icon instanceof IconInterface);
// bool(true)
} catch (CreateIconException $e) {
// do something
}
use Tobento\Service\Icon\IconInterface;
use Tobento\Service\Icon\CreateIconException;
use Tobento\Service\Filesystem\File;
try {
$icon = $iconFactory->createIconFromFile(
name: 'download',
file: 'path/download.svg' // string|File
);
var_dump($icon instanceof IconInterface);
// bool(true)
} catch (CreateIconException $e) {
// do something
}
use Tobento\Service\Icon\IconFactoryInterface;
use Tobento\Service\Icon\IconFactory;
use Tobento\Service\Tag\TagFactoryInterface;
$iconFactory = new IconFactory(
tagFactory: null // null|TagFactoryInterface
);
var_dump($iconFactory instanceof IconFactoryInterface);
// bool(true)
use Tobento\Service\Translation\Translator;
use Tobento\Service\Translation\Resources;
use Tobento\Service\Translation\Resource;
use Tobento\Service\Translation\Modifiers;
use Tobento\Service\Translation\MissingTranslationHandler;
use Tobento\Service\Icon\IconFactoryTranslator;
use Tobento\Service\Icon\SvgFileIcons;
use Tobento\Service\Dir\Dirs;
use Tobento\Service\Dir\Dir;
$translator = new Translator(
new Resources(
new Resource('*', 'de', [
'File' => 'Datei',
'Shopping Cart' => 'Warenkorb',
]),
),
new Modifiers(),
new MissingTranslationHandler(),
'de',
);
$icons = new SvgFileIcons(
dirs: new Dirs(new Dir('private/svg-icons/')),
iconFactory: new IconFactoryTranslator($translator),
);
use Tobento\Service\Icon\IconsInterface;
use Tobento\Service\Icon\Icons;
use Tobento\Service\Icon\IconFactory;
$icons = new Icons(new IconFactory());
var_dump($icons instanceof IconsInterface);
// bool(true)
use Tobento\Service\Icon\IconInterface;
use Tobento\Service\Icon\IconNotFoundException;
try {
$icon = $icons->get('download');
var_dump($icon instanceof IconInterface);
// bool(true)
} catch (IconNotFoundException $e) {
// do something
}
var_dump($icons->has('download'));
// bool(true)
use Tobento\Service\Icon\IconsInterface;
use Tobento\Service\Icon\SvgFileIcons;
use Tobento\Service\Dir\Dirs;
use Tobento\Service\Dir\Dir;
$icons = new SvgFileIcons(
dirs: new Dirs(new Dir('private/svg-icons/'))
);
var_dump($icons instanceof IconsInterface);
// bool(true)
use Tobento\Service\Icon\IconsInterface;
use Tobento\Service\Icon\SvgFileIconsToJsonFile;
use Tobento\Service\Dir\Dirs;
use Tobento\Service\Dir\Dir;
$icons = new SvgFileIconsToJsonFile(
dirs: new Dirs(new Dir('private/svg-icons/')),
cacheDir: new Dir('private/svg-icons/'),
clearCache: false, // set true to clear cache.
);
var_dump($icons instanceof IconsInterface);
// bool(true)
use Tobento\Service\Icon\IconsInterface;
use Tobento\Service\Icon\SvgFileIconsToJsonFiles;
use Tobento\Service\Dir\Dirs;
use Tobento\Service\Dir\Dir;
$icons = new SvgFileIconsToJsonFiles(
dirs: new Dirs(new Dir('private/svg-icons/')),
cacheDir: new Dir('private/svg-icons-json/'),
clearCache: false, // set true to clear cache.
);
var_dump($icons instanceof IconsInterface);
// bool(true)
use Tobento\Service\Icon\InMemoryHtmlIcons;
use Tobento\Service\Icon\IconFactory;
use Tobento\Service\Icon\IconsInterface;
$icons = new InMemoryHtmlIcons(
icons: [
'download' => 'html',
'cart' => 'html',
],
iconFactory: new IconFactory(),
);
var_dump($icons instanceof IconsInterface);
// bool(true)
use Tobento\Service\Icon\IconsInterface;
use Tobento\Service\Icon\Icons;
use Tobento\Service\Icon\IconFactory;
$icons = new Icons(
iconFactory: new IconFactory()
);
var_dump($icons instanceof IconsInterface);
// bool(true)
use Tobento\Service\Icon\StackIcons;
use Tobento\Service\Icon\SvgFileIcons;
use Tobento\Service\Dir\Dirs;
use Tobento\Service\Dir\Dir;
use Tobento\Service\Icon\InMemoryHtmlIcons;
use Tobento\Service\Icon\IconFactory;
use Tobento\Service\Icon\Icons;
use Tobento\Service\Icon\IconsInterface;
$icons = new StackIcons(
new SvgFileIcons(
dirs: new Dirs(new Dir('private/svg-icons/'))
),
new InMemoryHtmlIcons(
icons: [
'download' => 'html',
'cart' => 'html',
],
iconFactory: new IconFactory(),
),
// might be set as fallback as not to throw exception
// when icon is not found.
new Icons(new IconFactory()),
);
var_dump($icons instanceof IconsInterface);
// bool(true)
use Tobento\Service\Icon\IconFactory;
use Tobento\Service\Icon\IconInterface;
use Tobento\Service\Icon\Icons;
use Tobento\Service\Tag\TagInterface;
use Tobento\Service\Tag\Attributes;
$faIconFactory = new class() extends IconFactory
{
public function createIcon(
string $name,
null|TagInterface $tag = null,
null|TagInterface $labelTag = null,
null|TagInterface $parentTag = null,
): IconInterface {
if (is_null($tag)) {
$tag = $this->tagFactory->createTag(
name: 'i',
attributes: new Attributes([
'class'=> 'fa-solid fa-'.strtolower($name),
]),
);
}
return parent::createIcon($name, $tag, $labelTag, $parentTag);
}
};
$icons = new Icons(
iconFactory: $faIconFactory
);