Compression API: Unterschied zwischen den Versionen
Aus Contao Community Documentation
Tril (Diskussion | Beiträge) (→Beispielcode) |
Tril (Diskussion | Beiträge) (→Minimierungsverfahren) |
||
(6 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | |||
[[Category:Dev_HOWTOS]] | [[Category:Dev_HOWTOS]] | ||
[[Category:Development]] | [[Category:Development]] | ||
[[Category:Extensions]] | [[Category:Extensions]] | ||
− | Die '''Compression API''' ist eine Komprimierungs und Minimierungs API für Entwickler. | + | Die '''Compression API''' ist eine Komprimierungs- und Minimierungs-API für Entwickler. |
{{AppliesTo | {{AppliesTo | ||
|Version=2.9.x}} | |Version=2.9.x}} | ||
=Compression API= | =Compression API= | ||
− | Das Ziel der Compression API ist es, eine einheitliche Schnittstelle zu liefern, um Entwicklern von Erweiterungen und Templates einen vereinfachten Zugriff auf verschiedene Komprimierungs und Minimierungsverfahren zu geben. | + | Das Ziel der Compression API ist es, eine einheitliche Schnittstelle zu liefern, um Entwicklern von Erweiterungen und Templates einen vereinfachten Zugriff auf verschiedene Komprimierungs- und Minimierungsverfahren zu geben. |
==Die API== | ==Die API== | ||
− | Die API selbst besteht aus folgenden Basisklassen | + | Die API selbst besteht aus folgenden Basisklassen. |
+ | |||
+ | {{Anmerkung|Der folgende Quellcode ist kein korrekter PHP Code. Es handelt sich um Pseudo Code, um den Aufbau der Klassen und ihrer Funktionen zu verdeutlichen.}} | ||
===class Compression=== | ===class Compression=== | ||
Zeile 169: | Zeile 170: | ||
===Komprimierungsverfahren=== | ===Komprimierungsverfahren=== | ||
− | * gzip - GzipCompressor | + | * gzip - GzipCompressor (buildin) |
− | * bzip2 - Bzip2Compressor | + | * bzip2 - Bzip2Compressor (buildin) |
* ''lzma - LzmaCompressor (geplant)'' | * ''lzma - LzmaCompressor (geplant)'' | ||
===Minimierungsverfahren=== | ===Minimierungsverfahren=== | ||
− | * yui - YUI Compressor | + | * yui - YUI Compressor (über Paket [http://www.contao.org/erweiterungsliste/view/yui-compressor.html yui-compressor]) |
− | * | + | * cssmin - cssMinimizer (über Paket [http://www.contao.org/erweiterungsliste/view/cssMinimizer.20000008.de.html cssMinimizer]) |
− | * jsmin - jsMinimizer | + | * jsmin - jsMinimizer (über Paket [http://www.contao.org/erweiterungsliste/view/jsMinimizer.html jsMinimizer]) |
− | * dep - Dean Edwards Packer | + | * dep - Dean Edwards Packer (über Paket [http://www.contao.org/erweiterungsliste/view/DeanEdwardsPacker.html DeanEdwardsPacker]) |
==Beispielcode== | ==Beispielcode== | ||
Zeile 188: | Zeile 189: | ||
{ | { | ||
protected $strCompressionMethod = 'bzip2'; | protected $strCompressionMethod = 'bzip2'; | ||
− | |||
public function compress($strFile, $strFileBzip2) | public function compress($strFile, $strFileBzip2) | ||
Zeile 196: | Zeile 196: | ||
$this->import($strClass, 'Compressor'); | $this->import($strClass, 'Compressor'); | ||
return $this->Compressor->compress($strFile, $strFileBzip2); | return $this->Compressor->compress($strFile, $strFileBzip2); | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | ===CSS Code minimieren=== | ||
+ | |||
+ | <source lang="php"> | ||
+ | class MyExtension extends Controller | ||
+ | { | ||
+ | protected $strMinimisationMethod = 'yui'; | ||
+ | |||
+ | public function minimize($strFile, $strCssCode) | ||
+ | { | ||
+ | $this->import('Compression'); | ||
+ | $strClass = $this->Compression->getCssMinimizerClass($this->strMinimisationMethod); | ||
+ | $this->import($strClass, 'CssMinimizer'); | ||
+ | return $this->CssMinimizer->minimizeToFile($strFile, $strCssCode); | ||
} | } | ||
} | } | ||
</source> | </source> |
Aktuelle Version vom 8. Mai 2011, 17:38 Uhr
Die Compression API ist eine Komprimierungs- und Minimierungs-API für Entwickler.
betrifft | |
---|---|
Contao Version | 2.9.x |
Inhaltsverzeichnis
Compression API
Das Ziel der Compression API ist es, eine einheitliche Schnittstelle zu liefern, um Entwicklern von Erweiterungen und Templates einen vereinfachten Zugriff auf verschiedene Komprimierungs- und Minimierungsverfahren zu geben.
Die API
Die API selbst besteht aus folgenden Basisklassen.
Anmerkung: Der folgende Quellcode ist kein korrekter PHP Code. Es handelt sich um Pseudo Code, um den Aufbau der Klassen und ihrer Funktionen zu verdeutlichen. |
class Compression
Die Basisklasse, welche zentraler Zugriffspunkt für den Entwickler ist und im Idealfall die einzige, die explizit angesprochen wird.
class Compression { /** * Gibt alle verfügbaren Kompressoren zurück. */ array getCompressors() /** * Gibt die Klasse des Kompressors zurück. */ string getCompressorClass($strKey) /** * Gibt den in den Systemeinstellungen vorausgewählten Kompressor zurück. */ string getDefaultCompressor() /** * Gibt die Klasse des in den Systemeinstellungen vorausgewählten Kompressor zurück */ string getDefaultCompressorClass() /** * Gibt alle verfügbaren JavaScript Minimizer zurück. */ aray getJsMinimizers() /** * Gibt die Klasse des JavaScript Minimizer zurück. */ string getJsMinimizerClass($strKey) /** * Gibt den in den Systemeinstellungen vorausgewählten JavaScript Minimizer zurück. */ string getDefaultJsMinimizer() /** * Gibt die Klasse des in den Systemeinstellungen vorausgewählten JavaScript Minimizer zurück */ string getDefaultJsMinimizerClass() /** * Gibt alle verfügbaren CSS Minimizer zurück. */ aray getCssMinimizers() /** * Gibt die Klasse des CSS Minimizer zurück. */ string getCssMinimizerClass($strKey) /** * Gibt den in den Systemeinstellungen vorausgewählten CSS Minimizer zurück. */ string getDefaultCssMinimizer() /** * Gibt die Klasse des in den Systemeinstellungen vorausgewählten CSS Minimizer zurück */ string getDefaultCssMinimizerClass() }
interface Compressor
Das Compressor
Interface ist die einheitliche Schnittstelle zu allen Komprimierungsverfahren. Jeder Kompressor implementiert dieses Interface und kann so einheitlich benutzt werden.
interface Compressor { /** * Konfiguriert den Kompressor. */ void configure($arrConfig) /** * Gibt die aktuelle Kompressor Konfiguration zurück. */ array getConfig() /** * Komprimiert die Datei $strSource und schreibt die komprimierten Daten in die Datei $strTarget. */ bool compress($strSource, $strTarget) /** * Komprimiert die Datei $strSource und gibt die komprimierten Daten zurück. * Im Fehlerfall wird false zurück gegeben. */ mixed compressFromFile($strSource) /** * Komprimiert die Daten $varData und schreibt diese in die Datei $strFile. */ bool compressToFile($strFile, $varData) /** * Komprimiert die Daten $varData und gibt diese zurück. * Im Fehlerfall wird false zurück gegeben. */ mixed compressData($varData) }
interface Minimizer
Das Minimizer
Interface ist die einheitliche Schnittstelle zu allen Minimierungsverfahren für CSS und JavaScript Code. Jeder Minimizer implementiert dieses Interface und kann so einheitlich benutzt werden.
interface Minimizer { /** * Konfiguriert den Kompressor. */ void configure($arrConfig) /** * Gibt die aktuelle Kompressor Konfiguration zurück. */ array getConfig() /** * Minimiert die Datei $strSource und schreibt den minimierten Code in die Datei $strTarget. */ bool minimize($strSource, $strTarget) /** * Minimiert die Datei $strSource und gibt die minimierten Daten zurück. * Im Fehlerfall wird false zurück gegeben. */ mixed minimizeFromFile($strSource) /** * Minimiert den Code $strCode und schreibt diesen in die Datei $strFile. */ bool minimizeToFile($strFile, $varData) /** * Minimiert den Code $strCode und gibt diesen zurück. * Im Fehlerfall wird false zurück gegeben. */ mixed minimizeCode($strCode) }
Unterstützte Verfahren
Komprimierungsverfahren
- gzip - GzipCompressor (buildin)
- bzip2 - Bzip2Compressor (buildin)
- lzma - LzmaCompressor (geplant)
Minimierungsverfahren
- yui - YUI Compressor (über Paket yui-compressor)
- cssmin - cssMinimizer (über Paket cssMinimizer)
- jsmin - jsMinimizer (über Paket jsMinimizer)
- dep - Dean Edwards Packer (über Paket DeanEdwardsPacker)
Beispielcode
Datei komprimieren mit Bzip2
class MyExtension extends Controller { protected $strCompressionMethod = 'bzip2'; public function compress($strFile, $strFileBzip2) { $this->import('Compression'); $strClass = $this->Compression->getCompressorClass($this->strCompressionMethod); $this->import($strClass, 'Compressor'); return $this->Compressor->compress($strFile, $strFileBzip2); } }
CSS Code minimieren
class MyExtension extends Controller { protected $strMinimisationMethod = 'yui'; public function minimize($strFile, $strCssCode) { $this->import('Compression'); $strClass = $this->Compression->getCssMinimizerClass($this->strMinimisationMethod); $this->import($strClass, 'CssMinimizer'); return $this->CssMinimizer->minimizeToFile($strFile, $strCssCode); } }