<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Axel Jung &#187; PHP</title>
	<atom:link href="http://www.ajung.de/category/internet/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ajung.de</link>
	<description>Privater Blog von Axel Jung aus Wiesbaden</description>
	<lastBuildDate>Mon, 03 May 2010 19:12:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>PHP CopyPaste Detection in Eclipse</title>
		<link>http://www.ajung.de/2010/05/03/php-copypaste-detection-in-eclipse/</link>
		<comments>http://www.ajung.de/2010/05/03/php-copypaste-detection-in-eclipse/#comments</comments>
		<pubDate>Mon, 03 May 2010 19:12:47 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=615</guid>
		<description><![CDATA[Die CopyPaste Detection für PHP (phpcpd) ist eine wunderbare Sache und lässt sich einfach aufrufen und in phpUnderControl integrieren. Doch die Stellen zu suchen und zu Eliminieren kann schon etwas mühsam sein. Deutlich einfacher geht es mit dem Eclipse Plugin:  PHP Tool Integration. Hier kann man seit kurzem nicht nur den CodeSniffer innerhalb von Eclipse [...]]]></description>
			<content:encoded><![CDATA[<p>Die CopyPaste Detection für PHP (<a href="http://github.com/sebastianbergmann/phpcpd">phpcpd</a>) ist eine wunderbare Sache und lässt sich einfach aufrufen und in <a href="http://www.phpundercontrol.org/">phpUnderControl</a> integrieren. Doch die Stellen zu suchen und zu Eliminieren kann schon etwas mühsam sein. Deutlich einfacher geht es mit dem Eclipse Plugin:  <a href="http://www.phpsrc.org/">PHP Tool Integration</a>. Hier kann man seit kurzem nicht nur den CodeSniffer innerhalb von Eclipse nutzen, sondern auch die CopyPaste Detection.</p>
<p>Das Tool lässt sich einfach über das Context Menü aufrufen:</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2010/05/copypaste.jpg"><img class="alignnone size-full wp-image-616" title="copypaste" src="http://www.ajung.de/wp-content/uploads/2010/05/copypaste.jpg" alt="" width="505" height="99" /></a></p>
<p>Im Editor werden dann die Fehler angezeigt:</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2010/05/copypaste1.jpg"><img class="alignnone size-full wp-image-617" title="copypaste1" src="http://www.ajung.de/wp-content/uploads/2010/05/copypaste1.jpg" alt="" width="635" height="172" /></a></p>
<p>Zur Installation sollte man diese Eclipse Update Seite verwenden:</p>
<p><a href="http://www.phpsrc.org/eclipse/pti/">http://www.phpsrc.org/eclipse/pti/</a></p>
<p>Danach muss man noch die Einstellungen anpassen und die PHP Executable und die PEAR Libary anpassen:</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2010/05/copypaste23.jpg"><img class="alignnone size-full wp-image-621" title="copypaste2" src="http://www.ajung.de/wp-content/uploads/2010/05/copypaste23.jpg" alt="" width="761" height="392" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2010/05/03/php-copypaste-detection-in-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHPunit und Eclipse PHP Tool Integration (PTI)</title>
		<link>http://www.ajung.de/2010/01/26/phpunit-und-eclipse-php-tool-integration-pti/</link>
		<comments>http://www.ajung.de/2010/01/26/phpunit-und-eclipse-php-tool-integration-pti/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 18:05:13 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[Unittests]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=592</guid>
		<description><![CDATA[Ich nutze die Eclipse PHP Tool Integration Tools jetzt standardmäßig wegen der guten  Code Sniffer Integration wie bereits in einen älteren Blogbeitrag beschrieben. Darüber hinaus beinhaltet das Eclipse Plugin auch eine Funktion zum schnellen Ausführen von Unit Tests. Wenn man an einen Unit Test arbeitet kann man einfach einen Button im Eclipse anklicken zum Ausführen [...]]]></description>
			<content:encoded><![CDATA[<p>Ich nutze die <a href="http://www.phpsrc.org/wiki/">Eclipse PHP Tool Integration</a> Tools jetzt standardmäßig wegen der guten  Code Sniffer Integration wie bereits in einen älteren <a href="http://www.ajung.de/2009/11/23/php_codesniffer-mit-eclipse-nutzen/">Blogbeitrag</a> beschrieben.</p>
<p>Darüber hinaus beinhaltet das Eclipse Plugin auch eine Funktion zum schnellen Ausführen von Unit Tests.</p>
<p>Wenn man an einen Unit Test arbeitet kann man einfach einen Button im Eclipse anklicken zum Ausführen des Tests.</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2010/01/phptools_unit_button.jpg"><img class="alignnone size-full wp-image-596" title="phptools_unit_button" src="http://www.ajung.de/wp-content/uploads/2010/01/phptools_unit_button.jpg" alt="" width="129" height="65" /></a></p>
<p>Erstmal ist das relativ unspannend, da das selbe passiert wie bei einem Kommandozeilen Aufruf und die Ausgabe nur  unschön in der Eclipse Console erscheint.</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2010/01/phptools_unit_console.jpg"><img class="alignnone size-full wp-image-593" title="phptools_unit_console" src="http://www.ajung.de/wp-content/uploads/2010/01/phptools_unit_console.jpg" alt="" width="441" height="289" /></a></p>
<p>Es spart aber immerhin einen Toolwechsel und einige Klicks.</p>
<p>Wirklich praktisch finde ich aber die Auswertung der Fehler im Editor von Eclipse. Dort wird die Stelle wo der Fehler aufgetreten ist als unterstrichener Fehler markiert.</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2010/01/phptools_unit.jpg"><img class="alignnone size-full wp-image-594" title="phptools_unit" src="http://www.ajung.de/wp-content/uploads/2010/01/phptools_unit.jpg" alt="" width="317" height="30" /></a></p>
<p>Es wird nicht nur die Stelle im Test markiert sondern Fehler die in den getesteten Code Aufgetreten sind. Wenn dort ein PHP Fehler auftritt oder eine Exception geworfen wird die nicht abgefangen wird, wird diese Stelle markiert. So braucht man nicht anhand der Zeilen Nummern die Stellen suchen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2010/01/26/phpunit-und-eclipse-php-tool-integration-pti/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpUnit Coverage Probleme mit doppelten Klassen</title>
		<link>http://www.ajung.de/2010/01/25/phpunit-coverage-probleme-mit-doppelten-klassen/</link>
		<comments>http://www.ajung.de/2010/01/25/phpunit-coverage-probleme-mit-doppelten-klassen/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 13:43:28 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[phpunit]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[Unittests]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=590</guid>
		<description><![CDATA[Bei der Erstellung der Codecoverage mit phpUnit bin ich schon mehrmals aus diesen PHP Fehler gestoßen: PHP Fatal error:  Cannot redeclare class Aus dem Code war kein Grund dafür ersichtlich da alle Dateien mit require_once eingebunden waren. Das Problem lag dabei in der Verwendung von Mock Klassen ohne diese vorher importiert zu haben. Ich kann [...]]]></description>
			<content:encoded><![CDATA[<p>Bei der Erstellung der Codecoverage mit phpUnit bin ich schon mehrmals aus diesen PHP Fehler gestoßen:</p>
<pre>PHP Fatal error:  Cannot redeclare class
</pre>
<p>Aus dem Code war kein Grund dafür ersichtlich da alle Dateien mit require_once eingebunden waren. Das Problem lag dabei in der Verwendung von Mock Klassen ohne diese vorher importiert zu haben.</p>
<p>Ich kann mit folgenden Code eine Object der Klasse <em>Example</em> erstellen ohne die original Klasse zu laden.</p>
<pre>$object = $this-&gt;getMock ( 'Example', array (), array (), '', false );</pre>
<p>Wenn danach die original Klasse <em>Example</em> importiert wird, ist diese schon deklariert und es kommt zu diesen Fehler. Abhilfe tut hier ein require_once im Test:</p>
<pre>require_once('path/to/Example.php');
$object = $this-&gt;getMock ( 'Example', array (), array (), '', false );
</pre>
<p>Dann klappt es auch mit der Coverage Auswertung.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2010/01/25/phpunit-coverage-probleme-mit-doppelten-klassen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Tools Workaround für Windows</title>
		<link>http://www.ajung.de/2009/11/25/php-tools-workaround-fur-windows/</link>
		<comments>http://www.ajung.de/2009/11/25/php-tools-workaround-fur-windows/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 09:33:23 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[pear]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=587</guid>
		<description><![CDATA[Leider gibt es in den PHP Tools für Eclipse einen kleinen Bug unter Windows wenn man ein eigenen Coding Standard verwenden will. Der PHP_CodeSniffer kann mit dem Parameter &#8211;standard aufgerufen werden und der CodeSniffer sucht in dem Pfad nach Sniff Dateien. Der CodeSniffer verwendet dafür die PHP Konstante DIRECTORY_SEPARATOR die ja bekanntlich unter Windows ein [...]]]></description>
			<content:encoded><![CDATA[<p>Leider gibt es in den <a href="http://www.phpsrc.org/wiki/">PHP Tools für Eclipse</a> einen kleinen Bug unter Windows wenn man ein eigenen Coding Standard verwenden will. Der <a href="http://pear.php.net/package/PHP_CodeSniffer/">PHP_CodeSniffer</a> kann mit dem Parameter &#8211;standard aufgerufen werden und der CodeSniffer sucht in dem Pfad nach Sniff Dateien. Der CodeSniffer verwendet dafür die PHP Konstante DIRECTORY_SEPARATOR die ja bekanntlich unter Windows ein \ ist und kein /. Jetzt sollte man unter Windows den CodeSniffer wie folgt aufrufen:</p>
<pre>phpcs --standard=C:\path\to\standard</pre>
<p>Wenn man aber bei den PHP-Tools in die Debug Ausgabe schaut wird folgender Befehl ausgeführt</p>
<pre>phpcs --standard=C:/path/to/standard</pre>
<p>Dadurch findet der CodeSniffer die Dateien nicht.</p>
<p>Ich habe den Bug gemeldet und hoffe das es bald behoben ist.</p>
<p>Als Workaround habe ich den CodeSniffer innerhalb des PEAR Packet angepasst und folgende Zeile ergänzt:</p>
<pre>PHP\CodeSniffer.php Zeile 400</pre>
<pre>$this-&gt;standardDir = str_replace('/',DIRECTORY_SEPARATOR,$this-&gt;standardDir);</pre>
<p>In Eclipse muss man dann noch bei den PHP-Tools Einstellungen die lokale PEAR Libary verwenden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2009/11/25/php-tools-workaround-fur-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Schnelle Code Analyse mit phploc</title>
		<link>http://www.ajung.de/2009/11/19/schnelle-code-analyse-mit-phploc/</link>
		<comments>http://www.ajung.de/2009/11/19/schnelle-code-analyse-mit-phploc/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 18:51:18 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[metriken]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=568</guid>
		<description><![CDATA[Sebastian Bergmann hat mit phploc ein kleines Tool geschaffen, das einem ein kurzen Überblick über die Beschaffenheit des PHP Projektes gibt. Im Gegensatz zu PHP_Depend beschränkt sich die Auswertung auf ein paar werte, die aber für eine Auswertung innerhalb eines continues integration Prozess ausreichen würde. Es eignet sich nicht um die Schwachstellen zu finden. Sinnvoll [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sebastian-bergmann.de/">Sebastian Bergmann</a> hat mit <a href="http://github.com/sebastianbergmann/phploc">phploc</a> ein kleines Tool geschaffen, das einem ein kurzen Überblick über die Beschaffenheit des PHP Projektes gibt. Im Gegensatz zu PHP_Depend beschränkt sich die Auswertung auf ein paar werte, die aber für eine Auswertung innerhalb eines continues integration Prozess ausreichen würde. Es eignet sich nicht um die Schwachstellen zu finden.</p>
<p>Sinnvoll ist es auch zu zur Prüfung ob ein Opensource Projekt den eigenen Ansprüchen genügt oder ob ein schlechter Code zu erwarten ist mit dem man auf Dauer nicht arbeiten kann.</p>
<p>phploc wird einfach über den PEAR Installer installiert und kann dann über die Komandozeile über diesen Befehl aufgerufen werden.</p>
<pre>&gt; phploc "C:\...."</pre>
<p>Ich habe ein bekanntes Projektmanagementtool mit diesen Tool getestet und folgendes Ergebnis bekommen.</p>
<p><img class="alignnone size-full wp-image-573" title="phploc" src="http://www.ajung.de/wp-content/uploads/2009/11/phploc.gif" alt="phploc" width="668" height="415" /></p>
<p>Auffällig ist das hier keinerlei Interfaces und Abstrakte Klassen verwendet werden. Der Code ist relativ gut dokumentiert. Die Methoden haben mit durchschnittlich 36 Zeilen zu viel Logik und auch die Cyclomatische Komplexität ist etwas zu hoch. Der hohe Anteil an öffentlichen Methoden sprechen für eine potentielle Instabilität. Dafür scheint die Package Struktur übersichtlich zu sein.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2009/11/19/schnelle-code-analyse-mit-phploc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code Analyse mit PHP_Depend</title>
		<link>http://www.ajung.de/2009/11/05/code-analyse-mit-php_depend/</link>
		<comments>http://www.ajung.de/2009/11/05/code-analyse-mit-php_depend/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 18:49:55 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Typo3]]></category>
		<category><![CDATA[pear]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=544</guid>
		<description><![CDATA[Das PHP Pear Packet &#8220;PHP_Depend&#8221; eignet sich hervoragent zur Analyse der Code Qualität des eigenen PHP Projekts. Es lässt sich einfach über den Pear Installer installieren und kann dann auf der Comando Zeile über den Befehl &#8220;pdepend&#8221; aufrufen. Es wird nur PHP benötigt und kein Webserver oder Datenbank. Eine Installation unter Windows war ohne Probleme [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://pdepend.org/"><img class="alignright size-full wp-image-545" title="php_depend" src="http://www.ajung.de/wp-content/uploads/2009/11/php_depend.png" alt="php_depend" width="250" height="110" /></a>Das PHP Pear Packet &#8220;<a href="http://pdepend.org/">PHP_Depend</a>&#8221; eignet sich hervoragent zur Analyse der Code Qualität des eigenen PHP Projekts. Es lässt sich einfach über den Pear Installer installieren und kann dann auf der Comando Zeile über den Befehl &#8220;pdepend&#8221; aufrufen. Es wird nur PHP benötigt und kein Webserver oder Datenbank. Eine Installation unter Windows war ohne Probleme möglich.</p>
<p>Man kann PHP_Depend über einen beliebigen Code Ordner laufen lassen und sich dabei verschiedenen Formate ausgeben lassen.</p>
<p><a href="http://clarkware.com/software/JDepend.html">JDepend</a> ist ein Format aus der JavaWelt und wohl auch für den Namen des Projektes verantwortlich</p>
<blockquote><p>JDepend traverses Java class file directories and generates design quality metrics for each Java package. JDepend allows you to automatically measure the quality of a design in terms of its extensibility, reusability, and maintainability to manage package dependencies effectively.</p></blockquote>
<ul>
<li>&#8211;jdepend-chart=&#8230;.svg Erzeugt eine SVG Grafik die die Instabilität in Abhängigkeit zur Abstraktion anzeigt</li>
<li>&#8211; jdepend-xml=&#8230;xml Gibt diese Informationen als XML Datei aus</li>
</ul>
<p>Es gibt auch eine reine XML Ausgabe,  in der die Ergebnisse für jede einzelne Datei steht</p>
<ul>
<li>&#8211;summary-xml=&#8230;.xml</li>
</ul>
<p>Spannend ist auch die Pyramiden Darstellung</p>
<ul>
<li>&#8211;overview-pyramid=&#8230;.xml</li>
</ul>
<p><img class="alignnone size-full wp-image-559" title="pyramid" src="http://www.ajung.de/wp-content/uploads/2009/11/pyramid2.png" alt="pyramid" width="500" height="274" /></p>
<h3>@package</h3>
<p>Wenn man in seinen PHPDoc Kommentaren nicht mit dem @package Element gearbeitet hat muss man den Parameter <strong>&#8211;bad-documentation </strong>angeben. Lässt man den weg wird entweder gar nichts erzeugt oder nur für die Dateien die diesen Element besitzen. Um ordentlich mit dem Tool arbeiten zu können, sollte man @package ergänzen.</p>
<h3>Typo3 Vergleich</h3>
<p>Ich habe man den Kern von Typo3 Version 4 und 5 mit dem Tool analysiert:</p>
<p>JDepend Chart:</p>
<p>Typo3 4</p>
<p><img class="alignnone size-full wp-image-561" title="4_typo3" src="http://www.ajung.de/wp-content/uploads/2009/11/4_typo3.png" alt="4_typo3" width="402" height="252" /></p>
<p>Typo3 5</p>
<p><img class="alignnone size-full wp-image-563" title="5_typo3" src="http://www.ajung.de/wp-content/uploads/2009/11/5_typo3.png" alt="5_typo3" width="405" height="265" /></p>
<p>Überblick:</p>
<p>Typo3 4</p>
<p><img class="alignnone size-full wp-image-560" title="ov_4_typo3" src="http://www.ajung.de/wp-content/uploads/2009/11/ov_4_typo3.png" alt="ov_4_typo3" width="400" height="158" /></p>
<p>Typo3 5</p>
<p><img class="alignnone size-full wp-image-562" title="ov_5_typo3" src="http://www.ajung.de/wp-content/uploads/2009/11/ov_5_typo3.png" alt="ov_5_typo3" width="423" height="162" /></p>
<p>Aussagekräftig ist dieser Vergleich natürlich noch nicht, da Version 5 noch kaum Code enthält, aber man kann einen deutliche besseren Code erkennen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2009/11/05/code-analyse-mit-php_depend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ext: js_css_optimizer und t3lib_PageRenderer</title>
		<link>http://www.ajung.de/2009/10/06/ext-js_css_optimizer-und-t3lib_pagerenderer/</link>
		<comments>http://www.ajung.de/2009/10/06/ext-js_css_optimizer-und-t3lib_pagerenderer/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 18:55:40 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Typo3]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=539</guid>
		<description><![CDATA[In der neuen Typo3 Version 4.3 existiert eine neue Klasse t3lib_PageRenderer in der die CSS und Javascript Dateien registriert werden können. In dieser Klasse ist es vorgesehen die CSS Dateien zu bündeln und zu komprimieren. Da diese Funktionen noch nicht implementiert sind und es aber die Möglichkeit für Hooks gibt habe ich die Extension js_css_optimizer [...]]]></description>
			<content:encoded><![CDATA[<p>In der neuen Typo3 Version 4.3 existiert eine neue Klasse t3lib_PageRenderer in der die CSS und Javascript Dateien registriert werden können. In dieser Klasse ist es vorgesehen die CSS Dateien zu <strong>bündeln </strong>und zu <strong>komprimieren</strong>. Da diese Funktionen noch nicht implementiert sind und es aber die Möglichkeit für Hooks gibt habe ich die Extension <strong>js_css_optimizer </strong>erstellt, die diese Lücke füllt.</p>
<p>Die Extension registriert folgende Hooks:</p>
<ul>
<li>cssCompressHandler &#8211; zum Komprimieren der CSS Dateien</li>
<li>jsCompressHandler &#8211; zum Komprimieren der JavaScript Dateien</li>
<li>concatenateHandler &#8211; zum Bündeln der Dateien</li>
<li>clearCachePostProc &#8211; zum Löschen der gecachten Dateien im typo3temp Verzeichnis</li>
</ul>
<h3>CSS Komrpimierung</h3>
<p>Hierbei wird das Tool <a href="http://csstidy.sourceforge.net/">CSSTidy</a> verwendet.  Die Konfiguration lässt sich über den Extension Manager in Typo3 einstellen.</p>
<p><img class="alignnone size-full wp-image-540" title="js_opt" src="http://www.ajung.de/wp-content/uploads/2009/10/js_opt.png" alt="js_opt" width="336" height="347" /></p>
<p>Die CSS Datei wird in einem neuen Verzeichnis abgelegt. Die Extension versucht dabei die relativen Pfade in der CSS Datei auf Bilder um zuschreiben. Hier ist eventuell noch Anpassungbedarf.</p>
<p>Damit die CSS Datei komprimiert wird muss folgender Typo Script Code ergänzt werden:</p>
<pre>page {
includeCSS {
 screenStyle = ..../base.css
 screenStyle {
   media = screen
   import = 0
   <span style="color: #ff0000;">compress=1</span>
 }</pre>
<h3>JavaScript Komprimierung</h3>
<p>Für das JavaScript wird die <a href="http://www.crockford.com/javascript/jsmin.html">JSMin</a> Klasse aus dem Typo3 Core verwendet. Es wird nicht die t3lib::minify&#8230; verwendet, da diese nicht so effektiv ist.</p>
<p>In TypoScript kann die Komprimierung einzeln ein und ausgeschaltet werden:</p>
<pre>page{
 includeJS {
 file1 = ....common.js
 file1.<span style="color: #ff0000;">compress=1</span>
...</pre>
<h3>Bündelung</h3>
<p>Die Bündelung der Javascripte und CSS Dateien kann über TypoScript aktiviert werden.  Dafür gibt es diese Einstellung:</p>
<pre>config.concatenateJsAndCss = 1</pre>
<p>Hierbei ist nicht möglich CSS und JavaScript unterschiedlich zu behandeln. Deshalb gibt es in der Extension die Möglichkeit über den Extension Manager die Bündelung beispielsweise für CSS auszuschalten.</p>
<p><img class="alignnone size-full wp-image-541" title="js_opt_1" src="http://www.ajung.de/wp-content/uploads/2009/10/js_opt_1.png" alt="js_opt_1" width="192" height="125" /></p>
<p>Wenn bestimmte Dateien auf jeder Seite benötigt werden, dann macht es Sinn diese als Libs einzubinden. Dafür gibt es im TypoScript die Option includeJSlibs.</p>
<pre>page.includeJSlibs{
  jquery = ...jquery-1.3.2.min.js
  ...
}</pre>
<p>Dann werden die in eine separate Datei geschrieben und können vom Browser separat gecacht werden.</p>
<h3>Caching</h3>
<p>Die komprimierten und gebündelten Dateien werden in dem typo3Temp Verzeichnis abgelegt. Die Cache Datei werden nicht erneuert sondern müssen gelöscht werden um neu erzeugt zu werden. Das Löschen passiert automatisch wenn im Typo3 Backend der Cache gelöscht wird.</p>
<h3>Javascript und CSS aus den Plugins hinzufügen</h3>
<p>Wenn man früher in einem Plugin JavaScript oder CSS Daten hinzufügen wollte ohne TypoScript hat man das über $GLOBALS['TSFE']-&gt;additionalHeaderData machen. Da diese Daten nicht als JS oder CSS deklariert sind nutzen sie in diesen Kontext nichts mehr.  Man kann jetzt mittels $GLOBALS['TSFE']-&gt;getPageRenderer() auf den PageRenderer zugreifen und diesen die JS und CSS Dateien bekannt machen. Wenn man mit dem PageRenderer arbeitet kann man auch die Vorteile der Komprimierung und Bündelung nutzen. Es lohnt sich deshalb die Klasse t3lib_PageRenderer genauer anzuschauen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2009/10/06/ext-js_css_optimizer-und-t3lib_pagerenderer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
