WebAppManifest
in package
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
stringaddCategory()
public
addCategory(string $category) : static
Parameters
- $category : string
Return values
staticaddIcon()
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
$thisaddRelatedApplication()
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
staticaddScreenshot()
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
staticaddShortcut()
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
staticfromArray()
Factory: create from array
public
static fromArray(array<string|int, mixed> $arr) : self
Parameters
- $arr : array<string|int, mixed>
Return values
selfgenerateIconsFromSource()
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
Return values
$thisgetBackgroundColor()
public
getBackgroundColor() : string|null
Return values
string|nullgetCategories()
public
getCategories() : array<string|int, mixed>
Return values
array<string|int, mixed>getDescription()
public
getDescription() : string|null
Return values
string|nullgetDir()
public
getDir() : string|null
Return values
string|nullgetDisplay()
public
getDisplay() : string|null
Return values
string|nullgetIcons()
public
getIcons() : array<string|int, mixed>
Return values
array<string|int, mixed>getLang()
public
getLang() : string|null
Return values
string|nullgetName()
public
getName() : string|null
Return values
string|nullgetRelatedApplications()
public
getRelatedApplications() : array<string|int, mixed>
Return values
array<string|int, mixed>getScope()
public
getScope() : string|null
Return values
string|nullgetScreenshots()
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>|nullgetShortcuts()
public
getShortcuts() : array<string|int, mixed>
Return values
array<string|int, mixed>getShortName()
public
getShortName() : string|null
Return values
string|nullgetStartUrl()
public
getStartUrl() : string
Return values
stringgetThemeColor()
public
getThemeColor() : string|null
Return values
string|nulljsonSerializable()
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
$thisremoveIcon()
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
staticsaveToFile()
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
setBackgroundColor()
public
setBackgroundColor(string $color) : static
Parameters
- $color : string
Return values
staticsetCategories()
Replace categories list
public
setCategories(array<string|int, string> $categories) : static
Parameters
- $categories : array<string|int, string>
Return values
staticsetCommon()
Convenience: set multiple common fields via fluent API
public
setCommon(array<string, mixed> $data) : $this
Parameters
- $data : array<string, mixed>
Return values
$thissetDescription()
public
setDescription(string $description) : static
Parameters
- $description : string
Return values
staticsetDir()
public
setDir(string $dir) : static
Parameters
- $dir : string
Return values
staticsetDisplay()
public
setDisplay(string $display) : static
Parameters
- $display : string
Return values
staticsetLang()
public
setLang(string $lang) : static
Parameters
- $lang : string
Return values
staticsetName()
public
setName(string $name) : static
Parameters
- $name : string
Return values
staticsetPreferRelatedApplications()
public
setPreferRelatedApplications(bool $flag) : static
Parameters
- $flag : bool
Return values
staticsetScope()
public
setScope(string $scope) : static
Parameters
- $scope : string
Return values
staticsetShareTarget()
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
staticsetShortName()
public
setShortName(string $short) : static
Parameters
- $short : string
Return values
staticsetStartUrl()
public
setStartUrl(string $url) : static
Parameters
- $url : string
Return values
staticsetThemeColor()
public
setThemeColor(string $color) : static
Parameters
- $color : string
Return values
statictoArray()
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
stringvalidate()
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
mimeTypeForExtension()
Utility: guess mime type for an extension
private
mimeTypeForExtension(string $ext) : string
Parameters
- $ext : string