<?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>ajaveeb &#187; Entwicklungen</title>
	<atom:link href="http://ajaveeb.de/kategorien/entwicklungen/feed" rel="self" type="application/rss+xml" />
	<link>http://ajaveeb.de</link>
	<description>Das Technikblog von Benjamin Hofmann</description>
	<lastBuildDate>Fri, 26 Feb 2010 20:21:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>WordPress Plugin: dB Twtpoll</title>
		<link>http://ajaveeb.de/wordpress-plugin-db-twtpoll-648</link>
		<comments>http://ajaveeb.de/wordpress-plugin-db-twtpoll-648#comments</comments>
		<pubDate>Mon, 10 Aug 2009 21:17:27 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Entwicklungen]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Twtpoll]]></category>
		<category><![CDATA[Umfrage]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://ajaveeb.de/?p=648</guid>
		<description><![CDATA[You are registered on Twitter, own a blog and like to create polls? Then this plugin might be the right thing for you.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/ebb14f4d7954059c8f12dcd692f74341.jpg" alt="WordPress Plugin: dB Twtpoll" width="596" height="298" /></p><p style="font-weight:bold">You are registered on <a href="http://ajaveeb.de/tags/twitter" class="st_tag internal_tag" rel="tag" title="Posts tagged with Twitter">Twitter</a>, own a blog and like to create polls? Then this plugin might be the right thing for you.</p><p>Just to say it before anyone complains. This is my first public released plugin for <a href="http://wordpress.org">WordPress</a> and I´m not used to write english posts as you can tell if you look around a bit.</p>
<h2>What´s this all about?</h2>
<p>I like to create polls with <a href="http://twtpoll.com">Twtpoll</a>, a neat little service to create votings with your account from <a href="http://twitter.com">Twitter</a>.</p>
<p>These polls can be embedded in a website by using two lines of javascript code. That´s not a difficult thing to do, but it´s somehow inflexible. After embedding a poll you have javascript code directly in your post. That´s a bad thing because of three simple reasons:</p>
<ol>
<li>It´s not to easy to read. Especially for people that don´t speak HTML.</li>
<li>If the code for embedding a poll gets changed in future you have to look through all your posts with polls and update it.</li>
<li>Your feed subscribers could by chance not be able to view the poll, because script tags are filtered by their feedreader. If this is the case and you are using this plugin a fallback will be shown with a link to the original post.</li>
</ol>
<h2>So, where to get the plugin?</h2>
<p>At this very moment it isn´t listed in the <a href="http://wordpress.org/extend/plugins/">Plugin Directory at WordPress</a>. So you can only download it from here.</p>
<p><a href="http://ajaveeb.de/wp-content/uploads/2009/08/dB-Twtpoll.zip">DOWNLOAD</a></p>
<h2>How do I install the plugin now?</h2>
<p>That´s as easy as always with <a href="http://ajaveeb.de/tags/wordpress" class="st_tag internal_tag" rel="tag" title="Posts tagged with WordPress">WordPress</a>. Unpack the archive, upload it to your <code>wp-content</code> directory and activate it at the plugins page.</p>
<h2>I installed it. How do I embed polls?</h2>
<p>That´s really easy. Just add the shortcode <code>[twtpoll]</code> with the attribute <code>id</code> anywhere in your post. After this the poll will be shown at this exact position.</p>
<p>For now it is not possible to read and copy the ID of your poll from anywhere on <a href="http://ajaveeb.de/tags/twtpoll" class="st_tag internal_tag" rel="tag" title="Posts tagged with Twtpoll">Twtpoll</a>. Sounds confusing, but you can get the ID if you take a look at the URL in your browsers address bar. The last part of it is the ID you need to include your poll. Just copy it and paste it within the shortcode, e.g. <code>[twtpoll id="d6iby3"]</code></p>
<h2>Something else?</h2>
<p>Nope. Not really. I just hope you have fun with this plugin and my English wasn´t too bad. If you encounter any spelling or grammar errors please share this knowledge with me in the <a href="#respond">comments</a>.</p>
<p>One more thing. If you have a nice idea to extend the plugin don´t hesitate to let me know in the <a href="#respond">comments</a>. I appreciate every feedback.</p>
<p>&#8212;<br />
Photo: <a href="http://www.flickr.com/photos/theresasthompson/2999130055/">VOTE</a> by <a href="http://www.flickr.com/photos/theresasthompson/">Theresa Thompson</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/wordpress-plugin-db-twtpoll-648#comments">8 Kommentare</a> &middot; <a href="http://ajaveeb.de/wordpress-plugin-db-twtpoll-648">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/wordpress-plugin-db-twtpoll-648/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>maiksi.de &#8211; Mein Lifestream geht online</title>
		<link>http://ajaveeb.de/maiksi-de-mein-lifestream-geht-online-602</link>
		<comments>http://ajaveeb.de/maiksi-de-mein-lifestream-geht-online-602#comments</comments>
		<pubDate>Sun, 12 Jul 2009 22:44:07 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Entwicklungen]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Feed]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Launch]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Projekt]]></category>

		<guid isPermaLink="false">http://ajaveeb.de/?p=602</guid>
		<description><![CDATA[Lange habe ich den Launch meines Lifestreams geplant, jetzt ist es endlich soweit.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/dfa7bdb0f3356de03ed5e8bd4354be93.jpg" alt="maiksi.de &#8211; Mein Lifestream geht online" width="596" height="298" /></p><p style="font-weight:bold">Lange habe ich den <a href="http://ajaveeb.de/tags/launch" class="st_tag internal_tag" rel="tag" title="Posts tagged with Launch">Launch</a> meines Lifestreams geplant, jetzt ist es endlich soweit.</p><p>Seit heute ist mein neuestest <a href="http://ajaveeb.de/tags/projekt" class="st_tag internal_tag" rel="tag" title="Posts tagged with Projekt">Projekt</a> online: <a href="http://maiksi.de">maiksi.de</a>, mein Lifestream. Urspr&#252;nglich ganz anders geplant, aber jetzt wesentlich besser und viel cooler.</p>
<p>Urspr&#252;nglich wollte ich meinen Lifestream mit <a href="http://www.sweetcron.com/">Sweetcron</a> umsetzen, einem wirklich sch&#246;nen St&#252;ck Software, welches per Cronjob alle gepflegten Feeds einliest und chronologisch alle darin enthaltenen Artikel auflistet. Doch so sehr ich es auch versucht habe wollte kein anst&#228;ndiges Design dabei herauskommen.</p>
<p>Doch gestern kam mir die glorreiche Idee eines meiner alten Designs als Grundlage zu verwenden und damit mein <a href="http://ajaveeb.de/tags/feed" class="st_tag internal_tag" rel="tag" title="Posts tagged with Feed">Feed</a> fressendes Monster selbst zu programmieren. Das Basisdesign war ja schon da, ich musste es nur noch an den neuen Einsatzzweck anpassen, weshalb die <a href="http://ajaveeb.de/tags/entwicklung" class="st_tag internal_tag" rel="tag" title="Posts tagged with Entwicklung">Entwicklung</a> auch sehr schnell vonstatten gehen konnte.</p>
<h2>Technik</h2>
<p>Dass diese Website auf PHP basiert, brauche ich wohl niemandem zu erz&#228;hlen, immerhin ist diese Sprache mein Steckenpferd. Doch dazu wollte ich anfangs noch HTML 5 verwenden, habe es aber sein lassen, da wirklich nahezu kein Browser das unterst&#252;tzt, was ich nutzen wollte. Also bin ich beim guten alten XHTML geblieben. Abgesehen davon ist noch <a href="http://jquery.com/">jQuery</a> auf der Clientseite und <a href="http://magpierss.sourceforge.net/">Magpie RSS</a> auf der Serverseite im Einsatz.</p>
<p>Wird die Seite aufgerufen wird f&#252;r jede gelistete Website ein AJAX-Request abgesetzt, der mir im JSON-Format ein paar Basisdaten und die letzten 5 Eintr&#228;ge im <a href="http://ajaveeb.de/tags/feed" class="st_tag internal_tag" rel="tag" title="Posts tagged with Feed">Feed</a> mitsamt URL und Titel zur&#252;ckgibt. Aus diesen Daten werden kleine Fenster gebaut, die beim Klick auf den Titel einer Seite angezeigt werden und mittels <a href="http://jqueryui.com/">jQuery UI</a> verschoben werden k&#246;nnen.</p>
<h2>Antrieb</h2>
<p>Als Internetjunkie bin ich nahezu den ganzen Tag im Netz unterwegs und hinterlasse hier und dort diverse Spuren. Mit einem Lifestream k&#246;nnen diese Aktivit&#228;ten gesammelt und aggregiert werden. Da die Umsetzung mit Sweetcron jedoch nichts werden wollte habe ich einen neuen Antrieb gefunden, n&#228;mlich einen Lifestream zu schaffen, der ganz anders als alle anderen zuvor ist.</p>
<p>Ich denke, dass mir das mit dem schlichten Design und der interaktiven Umsetzung durchaus gelungen ist. Mittels eines kurzen Klicks ist man &#252;ber jede meiner Aktivit&#228;ten informiert und deswegen ist auch der Name maiksi perfekt. Dieses Wort stammt aus der Sprache <a href="http://de.wikipedia.org/wiki/Tagalog">Tagalog</a> und bedeutet &#8220;kurz&#8221;.</p>
<p>Und jetzt hoffe ich mal, dass euch diese Seite ebenso gut gef&#228;llt wie mir und bin gespannt auf Feedback <img src='http://ajaveeb.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/maiksi-de-mein-lifestream-geht-online-602#comments">0 Kommentare</a> &middot; <a href="http://ajaveeb.de/maiksi-de-mein-lifestream-geht-online-602">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/maiksi-de-mein-lifestream-geht-online-602/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>String Klasse: Version 1.1.0</title>
		<link>http://ajaveeb.de/string-klasse-version-1-1-0-572</link>
		<comments>http://ajaveeb.de/string-klasse-version-1-1-0-572#comments</comments>
		<pubDate>Sun, 05 Jul 2009 14:25:45 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Entwicklungen]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://ajaveeb.de/?p=572</guid>
		<description><![CDATA[Dank den Kommentaren zu den bisherigen Versionen ist es mir heute m&#246;glich eine neue Version meiner String-Klasse f&#252;r PHP zu ver&#246;ffentlichen.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/da942cc25621a5b0a06956979175e8a0.jpg" alt="String Klasse: Version 1.1.0" width="596" height="298" /></p><p style="font-weight:bold">Dank den Kommentaren zu den bisherigen Versionen ist es mir heute möglich eine neue Version meiner String-Klasse für PHP zu veröffentlichen.</p><p>Diese Version gammelt nun schon seit weit &#252;ber einem Monat auf meinem PC herum, hat aber erst heute ihre Vollendung gefunden dank dem <a href="http://ajaveeb.de/string-klasse-version-1-0-1-331#comment-431">Kommentar von Phil</a>. Er hat mich darauf gebracht zwei magische Methoden einzubauen, mit denen die M&#246;glichkeiten der Klasse enorm gestiegen sind.</p>
<h2>Neue Features</h2>
<p>Da dieses Release neue Features beinhaltet und nicht nur Bugs und Optimierungen enth&#228;lt verdient es auch den Sprung von <a href="http://ajaveeb.de/string-klasse-version-1-0-1-331">Version 1.0.1</a> auf 1.1.0. Welche Features das genau sind werde ich jetzt versuchen zu erl&#228;utern.</p>
<h3>String erweitern</h3>
<p>Es gibt jetzt gleich vier neue Methoden einen String zu erweitern: <code>add()</code>, <code>addMore()</code>, <code>insert()</code>, <code>insertMore()</code>.</p>
<p>Mit der <code>add()</code>-Methode ist es m&#246;glich einen anderen String oder auch ein String-Objekt an das bisher bestehende anzuf&#252;gen oder voranzustellen. Man kann auch mit einem Parameter angeben, was zwischen den Strings stehen soll. Mit <code>addMore()</code> kann man im Grunde genommen genau das Gleiche machen, nur kann man hier ein Array aus Strings oder String-Objekten &#252;bergeben.</p>
<p>Mittels <code>insert()</code> kann man einen String oder auch hier wieder ein String-Objekt in das bisherige String-Objekt einf&#252;gen. Dabei gibt man &#252;ber einen Parameter den Offset an. Hier macht <code>insertMore()</code> auch wieder das Gleiche, nur dass es die in einem Array &#252;bergebenen Strings nacheinander einf&#252;gt.</p>
<h3>String kopieren</h3>
<p>Es ist nun auch m&#246;glich ein String-Objekt zu kopieren mittels der Methode <code>copy()</code>. Zur&#252;ckgegeben wird ein neues String-Objekt, welches den gleichen Inhalt hat, wie das, welches kopiert wurde.</p>
<h3>Magische Methoden</h3>
<p>Mit PHP 5 wurden <a href="http://php.net/manual/en/language.oop5.magic.php">magische Methoden</a> in Objekten eingef&#252;hrt. Wie eingangs erw&#228;hnt habe ich heute erste die beiden Methoden <code>__call()</code> und <code>__toString()</code> eingebaut.</p>
<p>Erstere ist daf&#252;r zust&#228;ndig die M&#246;glichkeiten dieser Klasse enorm zu erweitern, da man dadurch jede beliebige String-Funktion aufrufen kann und diese dann auf das Objekt angewendet wird. Beispiel:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// Gibt &#39;is is the new st&#39; aus</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$string</span> <span class="sy0">=</span> <span class="kw2">new</span> String<span class="br0">&#40;</span><span class="st0">&#39;This is the new string.&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$string</span><span class="sy0">-&gt;</span><span class="me1">substr</span><span class="br0">&#40;</span><span class="nu0">2</span><span class="sy0">,</span> <span class="nu0">16</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">show</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>Wie man sieht ist diese Methode ein wirklich m&#228;chtiges Werkzeug und auch <a href="http://ajaveeb.de/php-klasse-fuer-strings-306#comment-225">Simon</a> sollte jetzt zufrieden gestellt sein <img src='http://ajaveeb.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Die Methode <code>__toString()</code> sorgt daf&#252;r, dass das Objekt direkt ausgegeben werden kann. Normalerweise w&#252;rde eine Warnung auftreten, doch jetzt wird schlicht und ergreifend der String zur&#252;ckgegeben. Das kann dann so aussehen:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// Gibt &#39;This is the new string.&#39; aus</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$string</span> <span class="sy0">=</span> <span class="kw2">new</span> String<span class="br0">&#40;</span><span class="st0">&#39;This is the new string.&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="re1">$string</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<h3>Vererbbarkeit</h3>
<p>Als letzte gravierende &#196;nderung ist es nun m&#246;glich von der String-Klasse abzuleiten, um eigene Erweiterungen daf&#252;r zu schreiben. Man kann in den abgeleiteten Klassen jede Methode verwenden, die die String-Klasse selbst hat, da alles entweder von au&#223;en zug&#228;nglich, also <code>public</code> ist oder gesch&#252;tzt (<code>protected</code>).</p>
<p>Diese M&#246;glichkeit habe ich mir auch direkt zunutze gemacht und eine Ableitung geschrieben: JavascriptString. Mit dieser Klasse ist es m&#246;glich viele String-Funktionen, die in Javascript zur Verf&#252;gung stehen auch in PHP zu nutzen.</p>
<h2>Dokumentation</h2>
<p>Dieser Artikel ist nicht allzu ausf&#252;hrlich und das soll er auch gar nicht sein. Ich muss nicht jede einzelne Zeile oder Methode ausf&#252;hrlich erkl&#228;ren, denn die Klasse selbst ist ausf&#252;hrlichst dokumentiert und mit Beispielen versehen. Wer jedoch einen schnellen Blick riskieren will<a href="http://development.ajaveeb.de/string/"> findet hier eine ausf&#252;hrliche Dokumentation</a>, die mit <a href="http://www.phpdoc.org/">phpDocumentor</a> erstellt wurde.</p>
<h2>Subversion</h2>
<p>Da ich inzwischen Subversion auch privat nutze war es nur logisch das <a href="http://ajaveeb.de/tags/projekt" class="st_tag internal_tag" rel="tag" title="Posts tagged with Projekt">Projekt</a> auch damit zu versionieren. Den aktuellen Entwicklungsstand findet man ab sofort immer unter dieser URL: <a href="http://dbsvn.agitos.de/public/string/trunk/">http://dbsvn.agitos.de/public/string/trunk/</a></p>
<p>Committen darf momentan nur ich, aber um den aktuellen Stand auschecken zu k&#246;nnen gibt es den User <strong>anonymous</strong> mit dem gleich lautenden Passwort.</p>
<h2><a href="http://ajaveeb.de/tags/download" class="st_tag internal_tag" rel="tag" title="Posts tagged with Download">Download</a></h2>
<p>Zu guter Letzt kommt schlie&#223;lich noch der <a href="http://ajaveeb.de/tags/download" class="st_tag internal_tag" rel="tag" title="Posts tagged with Download">Download</a> der aktuellen Version. <a href="http://ajaveeb.de/wp-content/uploads/2009/07/string_1_1_0.zip">Download</a>.</p>
<p>Wer auch hier Subversion nutzen m&#246;chte kann dies &#252;ber den von mir angelegten Tag erledigen: <a href="http://dbsvn.agitos.de/public/string/tags/1_1_0/">http://dbsvn.agitos.de/public/string/tags/1_1_0/</a></p>
<p>&#8212;<br />
Foto: <a href="http://www.flickr.com/photos/yanivg/95442635/">text decay</a> von <a href="http://www.flickr.com/photos/yanivg/">YaniG</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/string-klasse-version-1-1-0-572#comments">6 Kommentare</a> &middot; <a href="http://ajaveeb.de/string-klasse-version-1-1-0-572">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/string-klasse-version-1-1-0-572/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>String-Klasse: Version 1.0.1</title>
		<link>http://ajaveeb.de/string-klasse-version-1-0-1-331</link>
		<comments>http://ajaveeb.de/string-klasse-version-1-0-1-331#comments</comments>
		<pubDate>Thu, 05 Feb 2009 17:11:42 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Entwicklungen]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.ajaveeb.de/?p=331</guid>
		<description><![CDATA[Das erste Update meiner String-Klasse steht an.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/1daad04c15bb1468e050ab54d81c2f68.jpg" alt="String-Klasse: Version 1.0.1" width="596" height="298" /></p><p style="font-weight:bold">Das erste Update meiner String-Klasse steht an.</p><p><strong>Information:</strong><br />
Es steht eine neue Version der Klasse zur Verf&#252;gung: <a href="http://ajaveeb.de/string-klasse-version-1-1-0-572">String-Klasse: Version 1.1.0</a></p>
<p>Dank des Kommentars von <a href="http://www.ajaveeb.de/entwicklungen/php-klasse-fuer-strings-306/#comment-199">Phate</a> habe ich mich auf die Suche nach einer Alternative zu <a href="http://de.php.net/eval"><code>eval()</code></a> gemacht und diese in den Kommentaren zu dieser Funktion gefunden: <a href="http://de.php.net/manual/de/function.call-user-func-array.php"><code>call_user_func_array()</code></a>.<span id="more-331"></span></p>
<p>Mithilfe dieser Funktion habe ich nun also meine <a href="http://www.ajaveeb.de/entwicklungen/php-klasse-fuer-strings-306/">String-Klasse</a> leicht &#252;berarbeitet. Nun ist sie sogar etwas schlanker und der Code einfacher nachzuvollziehen als zuvor. Au&#223;erdem ist sie sicherer geworden, denn <code>eval()</code> stellt in gewisser Art und Weise ein Sicherheitsrisiko dar. Trotzdem bin ich pers&#246;nlich der Meinung, dass es durchaus seine Berechtigung hat in manchen Situationen.</p>
<p>Hier ist nun der <a href="http://ajaveeb.de/tags/download" class="st_tag internal_tag" rel="tag" title="Posts tagged with Download">Download</a> der neuen Version: <a href='http://www.ajaveeb.de/wp-content/uploads/2009/02/string_v101.zip'>string_v101.zip</a></p>
<p>Eine Dokumentation der Klasse und unter welcher Lizenz sie steht findet ihr in meinem <a href="http://www.ajaveeb.de/entwicklungen/php-klasse-fuer-strings-306/">ersten Beitrag</a> dar&#252;ber. Daran hat sich nichts ge&#228;ndert.</p>
<p>Ich bin allerdings immer noch auf der Suche nach sinnvollen Erweiterungen der Klasse. Gern nehme ich auch abstrakte Ideen entgegen und setze diese in, von der String-Klasse abgeleiteten Klassen, um <img src='http://ajaveeb.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>&#8212;<br />
Foto: <a href="http://www.flickr.com/photos/darwinbell/395970515/">what are word for?</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/string-klasse-version-1-0-1-331#comments">5 Kommentare</a> &middot; <a href="http://ajaveeb.de/string-klasse-version-1-0-1-331">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/string-klasse-version-1-0-1-331/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>PHP-Klasse f&#252;r Strings</title>
		<link>http://ajaveeb.de/php-klasse-fuer-strings-306</link>
		<comments>http://ajaveeb.de/php-klasse-fuer-strings-306#comments</comments>
		<pubDate>Sat, 31 Jan 2009 20:32:32 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Entwicklungen]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.ajaveeb.de/?p=306</guid>
		<description><![CDATA[Dies ist die Vorstellung einer meiner Entwicklungen. Einer String-Klasse f&#252;r PHP.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/4146c52f32851cb8c24110d07077d44e.jpg" alt="PHP-Klasse f&#252;r Strings" width="596" height="298" /></p><p style="font-weight:bold">Dies ist die Vorstellung einer meiner Entwicklungen. Einer String-Klasse für PHP.</p><p><strong>Information:</strong><br />
Es steht eine neue Version der Klasse zur Verf&#252;gung: <a href="http://ajaveeb.de/string-klasse-version-1-1-0-572">String-Klasse: Version 1.1.0</a></p>
<p>Inspiriert von C++ habe ich eine generische Klasse geschrieben, mit der man Strings in PHP in Objekte umwandeln kann.</p>
<p>Einer meiner Hauptgr&#252;nde f&#252;r diese <a href="http://ajaveeb.de/tags/entwicklung" class="st_tag internal_tag" rel="tag" title="Posts tagged with Entwicklung">Entwicklung</a> ist die Tatsache, dass ich in der Arbeit schon diverse Projekte auf UTF-8 umgestellt habe. Um UTF-8 m&#246;glichst weit zu unterst&#252;tzen hat man momentan eine sehr einfache M&#246;glichkeit, n&#228;mlich die <a href="http://de.php.net/mbstring">Multibyte String-Funktionen</a> von PHP. Damit der Code des Portals nun auch mit UTF-8 umgehen kann sucht man sich die Funktionen von der Seite des PHP-Manuals, sucht danach portalweit und ersetzt alle Vorkommen mit dem neuen Funktionsaufruf.<span id="more-306"></span></p>
<p>Da dies nur Copy &#038; Paste ist und ich f&#252;r meine eigenen Projekte sowas vermeiden will ist mir die Idee mit der String-Klasse gekommen, die ich gerade eben geschrieben habe. Der Vorteil dieser Klasse ist der, dass man sich keine Gedanken darum machen muss, ob die Multibyte-String-Erweiterung installiert ist oder nicht, da jeder Funktionsaufruf gepr&#252;ft wird und ggf. die Multibyte-Variante der Funktion genutzt wird.</p>
<h3>Verwendung</h3>
<p>Einen neuen String zu initialisieren geschieht entweder mit dem Konstruktor oder mit der Methode String->set():</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// mittels Konstruktor</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$string1</span> <span class="sy0">=</span> <span class="kw2">new</span> String<span class="br0">&#40;</span><span class="st0">&#39; &nbsp; &nbsp; Das ist ein Teststring. &nbsp; &#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// mittels set()</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$string2</span> <span class="sy0">=</span> <span class="kw2">new</span> String<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$string2</span><span class="sy0">-&gt;</span><span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&#39;Das ist auch ein Teststring.&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>Um einen String nun zu bearbeiten verwendet man die Methode String->edit(). Der erste Parameter stellt hierbei den Funktionsnamen dar, der zweite optionale Parameter enth&#228;lt ein Array mit s&#228;mtlichen ben&#246;tigten Parametern. Bei den Parametern kann man jedoch den ersten weglassen, da dies immer der String selbst ist.</p>
<p>Steht f&#252;r den &#252;bergebenen Funktionsnamen eine Multibyte-Version zur Verf&#252;gung wird diese verwendet.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// ohne Parameter</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$string1</span><span class="sy0">-&gt;</span><span class="me1">edit</span><span class="br0">&#40;</span><span class="st0">&#39;trim&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// mit Parametern</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$string2</span><span class="sy0">-&gt;</span><span class="me1">edit</span><span class="br0">&#40;</span><span class="st0">&#39;substr&#39;</span><span class="sy0">,</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="nu0">2</span><span class="sy0">,</span> <span class="nu0">10</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>Um einen String schlussendlich ausgeben zu k&#246;nnen gibt es die Methode String->get(). Diese gibt den String zur&#252;ck, den man anschlie&#223;end an andere Funktionen &#252;bergeben oder ausgeben lassen kann.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// gibt &#39;Das ist ein Teststring&#39; zur&#252;ck</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="re1">$string1</span><span class="sy0">-&gt;</span><span class="me1">get</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// gibt &#39;s ist auch&#39; zur&#252;ck</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="re1">$string2</span><span class="sy0">-&gt;</span><span class="me1">get</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<h3><a href="http://ajaveeb.de/tags/download" class="st_tag internal_tag" rel="tag" title="Posts tagged with Download">Download</a> &#038; Lizenz</h3>
<p>Der <a href="http://ajaveeb.de/tags/download" class="st_tag internal_tag" rel="tag" title="Posts tagged with Download">Download</a> der Klasse findet sich hier: <a href='http://www.ajaveeb.de/wp-content/uploads/2009/01/string.zip'>string.zip</a></p>
<p>Die Klasse steht unter der <a href="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</a>. Damit kann sie auch in kommerziellen Projekten verwendet, ge&#228;ndert oder weitergegeben werden.</p>
<h3>Weiterentwicklung</h3>
<p>Mir spukt eine &#8220;History&#8221; im Kopf herum, mit der man eine bestimmte Anzahl von &#196;nderungen am String wieder r&#252;ckg&#228;ngig machen kann, sofern man dies braucht. Jedoch w&#252;sste ich hierf&#252;r momentan keine Anwendungsm&#246;glichkeit und es w&#252;rde den Speicherbedarf nur massiv erh&#246;hen.</p>
<p>Habt ihr noch Ideen, was hier fehlt oder dringend ben&#246;tigt wird?</p>
<p>&#8212;<br />
Foto: <a href="http://www.flickr.com/photos/feuilllu/739173692/">WORDS</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/php-klasse-fuer-strings-306#comments">7 Kommentare</a> &middot; <a href="http://ajaveeb.de/php-klasse-fuer-strings-306">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/php-klasse-fuer-strings-306/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
