Documentation

WebAppManifest
in package

FinalYes

WebAppManifest

Professional helper for building and managing a web app manifest.json (PWA).

Usage: $m = new WebAppManifest([...]); $m->setName('My App')->addIcon(...)->saveToFile('manifest.json');

Table of Contents

Constants

DEFAULT  : array<string, mixed> = ['name' => null, 'short_name' => null, 'start_u...

Properties

$data  : array<string, mixed>

Methods

__construct()  : mixed
Constructor accepts initial manifest array (keys as in spec).
__toString()  : string
Return JSON string on cast
addCategory()  : static
addIcon()  : $this
Add icon entry.
addRelatedApplication()  : static
Add related application
addScreenshot()  : static
addShortcut()  : static
Add shortcut definition (PWA shortcuts).
fromArray()  : self
Factory: create from array
generateIconsFromSource()  : $this
Best-effort icon generator using Imagick (optional).
getBackgroundColor()  : string|null
getCategories()  : array<string|int, mixed>
getDescription()  : string|null
getDir()  : string|null
getDisplay()  : string|null
getIcons()  : array<string|int, mixed>
getLang()  : string|null
getName()  : string|null
getRelatedApplications()  : array<string|int, mixed>
getScope()  : string|null
getScreenshots()  : array<string|int, mixed>
getShareTarget()  : array<string|int, mixed>|null
getShortcuts()  : array<string|int, mixed>
getShortName()  : string|null
getStartUrl()  : string
getThemeColor()  : string|null
jsonSerializable()  : array<string|int, mixed>
Quick iterator-friendly representation (array)
merge()  : $this
Merge given values into manifest (shallow merge for top-level keys).
removeIcon()  : static
Remove icon entries by src (exact match) or by predicate.
saveToFile()  : void
Save manifest to file (atomically write to temporary file then rename).
setBackgroundColor()  : static
setCategories()  : static
Replace categories list
setCommon()  : $this
Convenience: set multiple common fields via fluent API
setDescription()  : static
setDir()  : static
setDisplay()  : static
setLang()  : static
setName()  : static
setPreferRelatedApplications()  : static
setScope()  : static
setShareTarget()  : static
Set share_target as per spec.
setShortName()  : static
setStartUrl()  : static
setThemeColor()  : static
toArray()  : array<string, mixed>
Return manifest as array (removes null values).
toJson()  : string
Serialize manifest to JSON.
validate()  : array<string|int, string>
Validate manifest against minimal rules.
validateOrFail()  : void
Validate and throw on error.
mimeTypeForExtension()  : string
Utility: guess mime type for an extension

Constants

DEFAULT

private array<string, mixed> DEFAULT = ['name' => null, 'short_name' => null, 'start_url' => '/', 'scope' => '/', 'display' => 'standalone', 'orientation' => null, 'background_color' => null, 'theme_color' => null, 'description' => null, 'categories' => [], 'lang' => null, 'dir' => null, 'icons' => [], 'shortcuts' => [], 'related_applications' => [], 'prefer_related_applications' => false, 'screenshots' => [], 'share_target' => null]

default manifest skeleton

Properties

$data

private array<string, mixed> $data = []

internal manifest data

Methods

__construct()

Constructor accepts initial manifest array (keys as in spec).

public __construct([array<string, mixed> $initial = [] ]) : mixed

Unknown keys are preserved (useful for custom fields).

Parameters
$initial : array<string, mixed> = []

__toString()

Return JSON string on cast

public __toString() : string
Return values
string

addCategory()

public addCategory(string $category) : static
Parameters
$category : string
Return values
static

addIcon()

Add icon entry.

public addIcon(string $src[, string|null $sizes = null ][, string|null $type = null ][, array<string, string> $attrs = [] ]) : $this

Example: addIcon('/icons/icon-192x192.png', '192x192', 'image/png', ['purpose'=>'any'])

Parameters
$src : string
$sizes : string|null = null
$type : string|null = null
$attrs : array<string, string> = []

additional fields (e.g. purpose)

Return values
$this

addRelatedApplication()

Add related application

public addRelatedApplication(string $platform, string $id[, array<string, mixed> $attrs = [] ]) : static
Parameters
$platform : string

e.g. "play", "itunes"

$id : string

id or url

$attrs : array<string, mixed> = []
Return values
static

addScreenshot()

public addScreenshot(string $src[, string|null $sizes = null ][, string|null $type = null ]) : static
Parameters
$src : string
$sizes : string|null = null
$type : string|null = null
Return values
static

addShortcut()

Add shortcut definition (PWA shortcuts).

public addShortcut(array<string, mixed> $shortcut) : static

Shortcut example: [ 'name' => 'Open search', 'short_name' => 'Search', 'url' => '/search', 'icons' => [ [ 'src'=>..., 'sizes'=>..., 'type'=>... ] ] ]

Parameters
$shortcut : array<string, mixed>
Return values
static

fromArray()

Factory: create from array

public static fromArray(array<string|int, mixed> $arr) : self
Parameters
$arr : array<string|int, mixed>
Return values
self

generateIconsFromSource()

Best-effort icon generator using Imagick (optional).

public generateIconsFromSource(string $sourcePath, string $destDir[, array<int, array<string|int, int>> $sizes = [192, 512] ][, string $format = 'png' ]) : $this

If Imagick extension not loaded or generation failed -> throws RuntimeException.

Function will generate resized images from a source file into destination directory and add icons entries.

Parameters
$sourcePath : string

absolute path to source image (should be square and large enough)

$destDir : string

destination directory (web-accessible) - will be created if missing

$sizes : array<int, array<string|int, int>> = [192, 512]

array of sizes to generate, e.g. [192, 512]

$format : string = 'png'

png|webp

Tags
throws
RuntimeException
Return values
$this

getBackgroundColor()

public getBackgroundColor() : string|null
Return values
string|null

getCategories()

public getCategories() : array<string|int, mixed>
Return values
array<string|int, mixed>

getDescription()

public getDescription() : string|null
Return values
string|null

getDir()

public getDir() : string|null
Return values
string|null

getDisplay()

public getDisplay() : string|null
Return values
string|null

getIcons()

public getIcons() : array<string|int, mixed>
Return values
array<string|int, mixed>

getLang()

public getLang() : string|null
Return values
string|null

getName()

public getName() : string|null
Return values
string|null

getRelatedApplications()

public getRelatedApplications() : array<string|int, mixed>
Return values
array<string|int, mixed>

getScope()

public getScope() : string|null
Return values
string|null

getScreenshots()

public getScreenshots() : array<string|int, mixed>
Return values
array<string|int, mixed>

getShareTarget()

public getShareTarget() : array<string|int, mixed>|null
Return values
array<string|int, mixed>|null

getShortcuts()

public getShortcuts() : array<string|int, mixed>
Return values
array<string|int, mixed>

getShortName()

public getShortName() : string|null
Return values
string|null

getStartUrl()

public getStartUrl() : string
Return values
string

getThemeColor()

public getThemeColor() : string|null
Return values
string|null

jsonSerializable()

Quick iterator-friendly representation (array)

public jsonSerializable() : array<string|int, mixed>
Return values
array<string|int, mixed>

merge()

Merge given values into manifest (shallow merge for top-level keys).

public merge(array<string, mixed> $values) : $this

For arrays like icons/shortcuts you probably want to use addIcon/addShortcut.

Parameters
$values : array<string, mixed>
Return values
$this

removeIcon()

Remove icon entries by src (exact match) or by predicate.

public removeIcon([string|callable|null $srcOrCallable = null ]) : static
Parameters
$srcOrCallable : string|callable|null = null

exact src or predicate fn(array):bool

Return values
static

saveToFile()

Save manifest to file (atomically write to temporary file then rename).

public saveToFile(string $path[, bool $pretty = true ]) : void
Parameters
$path : string
$pretty : bool = true
Tags
throws
RuntimeException

setBackgroundColor()

public setBackgroundColor(string $color) : static
Parameters
$color : string
Return values
static

setCategories()

Replace categories list

public setCategories(array<string|int, string> $categories) : static
Parameters
$categories : array<string|int, string>
Return values
static

setCommon()

Convenience: set multiple common fields via fluent API

public setCommon(array<string, mixed> $data) : $this
Parameters
$data : array<string, mixed>
Return values
$this

setDescription()

public setDescription(string $description) : static
Parameters
$description : string
Return values
static

setDir()

public setDir(string $dir) : static
Parameters
$dir : string
Return values
static

setDisplay()

public setDisplay(string $display) : static
Parameters
$display : string
Return values
static

setLang()

public setLang(string $lang) : static
Parameters
$lang : string
Return values
static

setName()

public setName(string $name) : static
Parameters
$name : string
Return values
static

setPreferRelatedApplications()

public setPreferRelatedApplications(bool $flag) : static
Parameters
$flag : bool
Return values
static

setScope()

public setScope(string $scope) : static
Parameters
$scope : string
Return values
static

setShareTarget()

Set share_target as per spec.

public setShareTarget(array<string, mixed>|null $config) : static

Example: setShareTarget([ 'action' => '/share', 'method' => 'GET', 'params' => ['title'=>'title','text'=>'text','url'=>'url'] ])

Parameters
$config : array<string, mixed>|null
Return values
static

setShortName()

public setShortName(string $short) : static
Parameters
$short : string
Return values
static

setStartUrl()

public setStartUrl(string $url) : static
Parameters
$url : string
Return values
static

setThemeColor()

public setThemeColor(string $color) : static
Parameters
$color : string
Return values
static

toArray()

Return manifest as array (removes null values).

public toArray() : array<string, mixed>
Return values
array<string, mixed>

toJson()

Serialize manifest to JSON.

public toJson([bool $pretty = false ]) : string
Parameters
$pretty : bool = false
Return values
string

validate()

Validate manifest against minimal rules.

public validate() : array<string|int, string>

Returns array of errors (empty if valid).

Return values
array<string|int, string>

errors

validateOrFail()

Validate and throw on error.

public validateOrFail() : void
Tags
throws
InvalidArgumentException

mimeTypeForExtension()

Utility: guess mime type for an extension

private mimeTypeForExtension(string $ext) : string
Parameters
$ext : string
Return values
string
On this page

Search results