Compression API: Unterschied zwischen den Versionen

Aus Contao Community Documentation

(Komprimierungsverfahren)
(Minimierungsverfahren)
 
(14 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{stub}}
 
 
[[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=
  
==Unterstützte Verfahren==
+
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.
  
===Komprimierungsverfahren===
+
==Die API==
  
* gzip - GzipCompressor
+
Die API selbst besteht aus folgenden Basisklassen.
* bzip2 - Bzip2Compressor
+
* ''lzma - LzmaCompressor (geplant)''
+
  
===Minimierungsverfahren===
+
{{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.}}
  
====YUI Compressor====
+
===class Compression===
  
====cssMinimizer====
+
Die Basisklasse, welche zentraler Zugriffspunkt für den Entwickler ist und im Idealfall die einzige, die explizit angesprochen wird.
  
====jsMinimizer====
+
<source lang="php">
 +
class Compression
 +
{
 +
    /**
 +
    * Gibt alle verfügbaren Kompressoren zurück.
 +
    */
 +
    array getCompressors()
  
====Dean Edwards Packer====
+
    /**
 +
    * Gibt die Klasse des Kompressors zurück.
 +
    */
 +
    string getCompressorClass($strKey)
  
===={less}====
+
    /**
 +
    * 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()
 +
}
 +
</source>
 +
 
 +
===interface Compressor===
 +
 
 +
Das <code>Compressor</code> Interface ist die einheitliche Schnittstelle zu allen Komprimierungsverfahren. Jeder Kompressor implementiert dieses Interface und kann so einheitlich benutzt werden.
 +
 
 +
<source lang="php">
 +
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)
 +
}
 +
</source>
 +
 
 +
===interface Minimizer===
 +
 
 +
Das <code>Minimizer</code> 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.
 +
 
 +
<source lang="php">
 +
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)
 +
}
 +
</source>
 +
 
 +
==Unterstützte Verfahren==
 +
 
 +
===Komprimierungsverfahren===
 +
 
 +
* gzip - GzipCompressor (buildin)
 +
* bzip2 - Bzip2Compressor (buildin)
 +
* ''lzma - LzmaCompressor (geplant)''
 +
 
 +
===Minimierungsverfahren===
  
===CSS===
+
* 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 (über Paket [http://www.contao.org/erweiterungsliste/view/jsMinimizer.html jsMinimizer])
 +
* dep - Dean Edwards Packer (über Paket [http://www.contao.org/erweiterungsliste/view/DeanEdwardsPacker.html DeanEdwardsPacker])
  
====Ünterstützte Komprimierungen====
+
==Beispielcode==
  
* YUI Compressor
+
===Datei komprimieren mit Bzip2===
* cssMinimizer
+
* DeanEdwards Packer
+
* {less}
+
* gzip
+
  
===JavaScript===
+
<source lang="php">
 +
class MyExtension extends Controller
 +
{
 +
    protected $strCompressionMethod = 'bzip2';
  
====Ünterstützte Komprimierungen====
+
    public function compress($strFile, $strFileBzip2)
 +
    {
 +
        $this->import('Compression');
 +
        $strClass = $this->Compression->getCompressorClass($this->strCompressionMethod);
 +
        $this->import($strClass, 'Compressor');
 +
        return $this->Compressor->compress($strFile, $strFileBzip2);
 +
    }
 +
}
 +
</source>
  
* YUI Compressor
+
===CSS Code minimieren===
* jsMinimizer
+
* DeanEdwards Packer
+
* gzip
+
  
===Andere Dateitypen===
+
<source lang="php">
 +
class MyExtension extends Controller
 +
{
 +
    protected $strMinimisationMethod = 'yui';
  
* gzip
+
    public function minimize($strFile, $strCssCode)
* bzip2
+
    {
* lzma
+
        $this->import('Compression');
* zip
+
        $strClass = $this->Compression->getCssMinimizerClass($this->strMinimisationMethod);
 +
        $this->import($strClass, 'CssMinimizer');
 +
        return $this->CssMinimizer->minimizeToFile($strFile, $strCssCode);
 +
    }
 +
}
 +
</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

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.png 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

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);
    }
}
Ansichten
Meine Werkzeuge

Contao Community Documentation

omg, ich brauche wirklich ne Freundin... ich lese nachts um 2 den Wiki Beitrag über Comic Sans MS

Leo Unglaub
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge