<?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>actra.development - passionate coding since 2001 &#187; PHP</title>
	<atom:link href="http://blog.actra.de/kategorie/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.actra.de</link>
	<description></description>
	<lastBuildDate>Wed, 13 Apr 2011 20:50:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>SVN-Diff-Export &#8211; ein simples kleines Tool</title>
		<link>http://blog.actra.de/2009/12/07/svn-diff-export-ein-simples-kleines-tool/</link>
		<comments>http://blog.actra.de/2009/12/07/svn-diff-export-ein-simples-kleines-tool/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 12:42:57 +0000</pubDate>
		<dc:creator>actra.development</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[CodeSnippets]]></category>

		<guid isPermaLink="false">http://blog.actra.de/?p=86</guid>
		<description><![CDATA[Es ist nun doch schon eine Weile her, dass ich den letzten Eintrag verfasst habe&#8230;die Zeit rennt einem aber auch davon und es ist alles wichtiger als der eigene Blog Aber daf&#252;r gibt&#39;s heute was Feines: ein SVN-Diff-Export-Tool! Wer sich nun fragt, was das sein soll &#8211; ganz einfach: ein PHP-Script, das aus einem Diff [...]]]></description>
			<content:encoded><![CDATA[<p>Es ist nun doch schon eine Weile her, dass ich den letzten Eintrag verfasst habe&#8230;die Zeit rennt einem aber auch davon und es ist alles wichtiger als der eigene Blog <img alt="" src="http://blog.actra.de/wp-content/plugins/fckeditor-for-wordpress-plugin/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif" title="" /></p>
<p>Aber daf&uuml;r gibt&#39;s heute was Feines: ein SVN-Diff-Export-Tool!</p>
<p><span id="more-86"></span></p>
<p>Wer sich nun fragt, was das sein soll &#8211; ganz einfach: ein PHP-Script, das aus einem Diff zweier SVN-Revisions die ge&auml;nderten Dateien und Verzeichnisse exportiert.</p>
<p>Das ist sehr praktisch, wenn man einem Kunden &quot;nur mal eben&quot; die Changes schicken will&#8230;und dann im Normalfall per Hand aus der WorkingCopy exportieren w&uuml;rde.</p>
<p>So geht&#39;s doch viel einfacher &#8211; URL zum Repo (bzw. Repo-Pfad) angeben, ggfls. User/Pass, Start- (und optional End-) -Revison, Export-Verzeichnis, fertig.</p>
<p>&nbsp;</p>
<p>Ein paar kleine Hinweise noch:</p>
<ul style="margin-left: 20px; list-style-type: square;">
<li>es ist eine Quick&#39;n&#39;Dirty-L&ouml;sung, dementsprechend ist der Code nicht unbedingt &quot;aufgeh&uuml;bscht&quot;.</li>
<li>ggfls. m&uuml;ssen die Pfade zu &quot;svn diff&quot; und &quot;svn cat&quot; im Script (Zeile 46/47) angepasst werden</li>
<li>sofern open_basedir gesetzt ist dies am besten deaktivieren: /usr/bin/php -d open_basedir=&quot;&quot; /path/to/svnDiffExport.php</li>
<li>sollte das Script abbrechen sollten memory_limit und max_execution_time gepr&uuml;ft werden</li>
<li>Subversion sollte in einer aktuellen Version vorliegen, da &quot;svn diff&quot; mit den Optionen &quot;&#8211;summary&quot; und &quot;&#8211;xml&quot; verwendet wird</li>
<li>das Script verwendet SimpleXML zum Parsen des Diff-Outputs &#8211; dementsprechend muss die PHP-Extension installiert sein</li>
<li>svn:externals werden nicht exportiert</li>
<li>Getestet wurde es nur kurz, daf&uuml;r aber auf Windows und Debian Lenny &#8211; auf beiden lief es problemlos</li>
<li>Wie &uuml;blich: Keine Garantie &amp; Haftung! Siehe Lizenz.</li>
</ul>
<p>&nbsp;</p>
<p>Download: <a href="http://blog.actra.de/wp-content/uploads/2009/12/svnDiffExport.zip">svnDiffExport.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.actra.de/2009/12/07/svn-diff-export-ein-simples-kleines-tool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>exTSend_DIContainer &#8211; DependencyInjection</title>
		<link>http://blog.actra.de/2009/11/10/extsenddicontainer-dependencyinjection/</link>
		<comments>http://blog.actra.de/2009/11/10/extsenddicontainer-dependencyinjection/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 19:34:07 +0000</pubDate>
		<dc:creator>actra.development</dc:creator>
				<category><![CDATA[CodeSnippets]]></category>
		<category><![CDATA[exTSend.com]]></category>

		<guid isPermaLink="false">http://blog.actra.de/?p=75</guid>
		<description><![CDATA[F&#252;r einen neuen Ansatz in Sachen Models im Zend Framework habe ich mich mal ein bisschen mit DependencyInjection und Lazy Loading besch&#228;ftigt&#8230;Rausgekommen ist dabei eine erste Version des exTSend_DIContainer. Ist schon ganz gut gelungen, wie ich finde. Das Sch&#246;ne daran: ich kann meine Objekte wie z.B. Services (UserManagement), Zend_Db etc. direkt in den Resource-Plugins (f&#252;r&#39;s [...]]]></description>
			<content:encoded><![CDATA[<p>F&uuml;r einen neuen Ansatz in Sachen Models im Zend Framework habe ich mich mal ein bisschen mit DependencyInjection und Lazy Loading besch&auml;ftigt&#8230;<span id="more-75"></span>Rausgekommen ist dabei eine erste Version des exTSend_DIContainer.</p>
<p>Ist schon ganz gut gelungen, wie ich finde.</p>
<p>Das Sch&ouml;ne daran: ich kann meine Objekte wie z.B. Services (UserManagement), Zend_Db etc. direkt in den Resource-Plugins (f&uuml;r&#39;s Bootstrappen) definieren, sie werden aber noch nicht geladen/initialisiert.</p>
<p>Erst wenn ich mir, wie ich es nenne, eine Komponente &quot;hole&quot; wird der ganze ben&ouml;tigte &quot;Rattenschwanz&quot; geladen.</p>
<p>Warum das so toll ist? Ganz einfach: Wozu soll ich eine DB-Verbindung aufbauen, wenn diese f&uuml;r den Request nicht ben&ouml;tigt wird?</p>
<p>Sollte sie doch an irgend einer Stelle ben&ouml;tigt werden mache ich ein einfaches exTSend_DIContainer::getComponent(&#39;database&#39;) (sofern ich die Komponente &quot;database&quot; genannt habe) und bekomme ein funktionsf&auml;higes Zend_Db-Objekt zur&uuml;ck.</p>
<p>&nbsp;</p>
<p>Da ich noch nicht ausreichend Zeit zum Testen hatte stell ich den Code einfach mal so zur Diskussion, ohne Anspruch auf Vollst&auml;ndigkeit oder Funktionsf&auml;higkeit.</p>
<p>Wer es n&uuml;tzlich findet darf es einsetzen, sollte aber bedenken, dass er mal dr&uuml;ber schauen sollte, ob alles &quot;OK&quot; ist.</p>
<p>Wenn ich mal wieder Zeit finde wird das Ganze auch endlich mal auf <a href="http://www.extsend.com">exTSend.com</a> aktualisiert&#8230;wenn&#8230;ja wenn&#8230;</p>
<p>&nbsp;</p>
<p>Ich w&uuml;rde mich jedenfalls &uuml;ber ein wenig Feedback freuen &#8211; so denn &uuml;berhaupt jemand den leider noch immer <a href="http://blog.actra.de/2009/10/17/lahmender-server/">lahmenden Blog</a> liest&#8230;ich gelobe Besserung in naher Zukunft <img src='http://blog.actra.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p>Download: <a href="http://blog.actra.de/wp-content/uploads/2009/11/exTSend-DIContainer.zip">exTSend-DIContainer</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.actra.de/2009/11/10/extsenddicontainer-dependencyinjection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>exTSendPro</title>
		<link>http://blog.actra.de/2009/10/22/extsendpro/</link>
		<comments>http://blog.actra.de/2009/10/22/extsendpro/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 19:56:38 +0000</pubDate>
		<dc:creator>actra.development</dc:creator>
				<category><![CDATA[exTSend.com]]></category>
		<category><![CDATA[exTSend]]></category>
		<category><![CDATA[exTSendPro]]></category>
		<category><![CDATA[PayPal]]></category>
		<category><![CDATA[ZF]]></category>

		<guid isPermaLink="false">http://blog.actra.de/?p=59</guid>
		<description><![CDATA[Ich arbeite nun seit einiger Zeit auch an, sagen wir mal, &#34;Business-Plugins&#34; f&#252;r das Zend Framework. Da diese teils doch recht aufw&#228;ndig sind habe ich diese aus dem &#34;normalen&#34; OpenSource-exTSend ausgelagert und das Ganze einfach &#34;exTSendPro&#34; getauft. &#34;Pro&#34; bedeutet in diesem Fall auch &#34;kostenpflichtig&#34;, da die Entwicklung, Tests und Pflege der Plugins Zeit kostet. Zudem [...]]]></description>
			<content:encoded><![CDATA[<p>
	Ich arbeite nun seit einiger Zeit auch an, sagen wir mal, &quot;Business-Plugins&quot; f&uuml;r das Zend Framework.</p>
<p>
	Da diese teils doch recht aufw&auml;ndig sind habe ich diese aus dem &quot;normalen&quot; OpenSource-exTSend ausgelagert und das Ganze einfach &quot;exTSendPro&quot; getauft.</p>
<p>
	<span id="more-59"></span>&quot;Pro&quot; bedeutet in diesem Fall auch &quot;kostenpflichtig&quot;, da die Entwicklung, Tests und Pflege der Plugins Zeit kostet.</p>
<p>
	Zudem sind es in der Regel Erweiterungen, die prim&auml;r zum Geld verdienen eingesetzt werden &#8211; und da denke ich ganz einfach: Wer Geld verdienen will muss auch Geld ausgeben.</p>
<p>
	Denn zu guter Letzt ist es doch so, dass ich nunmal mit Programmierung meinen Lebensunterhalt (und meine Hobbies) finanziere.</p>
<p>
	&nbsp;</p>
<p>
	Eine wohl sehr n&uuml;tzliche Erweiterung ist die PayPal-Klasse, mit der es, zumindest in der aktuellen Version, m&ouml;glich ist, Zahlungsabwicklungen z.B. aus einem Warenkorb heraus anzusto&szlig;en.</p>
<p>
	Man kann jetzt freilich dar&uuml;ber streiten, ob es denn nicht auch die von PayPal gelieferten Standardklassen tun&#8230;</p>
<p>
	Ich sage &quot;nein&quot;, insbesondere, wenn man Wert auf sauberen Code legt und ganz besonders, wenn man m&ouml;glichst ZF-nah bleiben m&ouml;chte.</p>
<p>
	&nbsp;</p>
<p>
	Praktischer Weise unterst&uuml;tzt <strong>exTSendPro_Service_PayPal</strong> sowohl die PayPal-SOAP-Schnittstelle als auch die NVP-Schnittstelle.</p>
<p>
	Im Grunde ist es relativ egal, welche man nutzt &#8211; der Code f&uuml;r die Verwendung von <strong>exTSendPro_Service_PayPal</strong> ist der gleiche, da die Parameter intern entsprechend umgesetzt werden.</p>
<p>
	Gleiches gilt nat&uuml;rlich auch f&uuml;r die erhaltenen Antworten &#8211; diese werden bei beiden &Uuml;bermittlungsarten vereinheitlicht.</p>
<p>
	&nbsp;</p>
<p>
	Hier mal ein kleiner Auszug, wie so ein Request (SOAP, PayPal-Sandbox) ablaufen w&uuml;rde:</p>
<pre class="brush:php">$authModel = new exTSendPro_Service_PayPal_Model_Authentication(&lt;user&gt;, &lt;pass&gt;, &lt;signature&gt;, &lt;cert&gt;, &lt;cert_pass&gt;, &lt;subject&gt;);
$paypalObject = exTSendPro_Service_PayPal::factory(exTSendPro_Service_PayPal::API_SOAP, exTSendPro_Service_PayPal::ENVIRONMENT_SANDBOX, $authModel);
$request = new exTSendPro_Service_PayPal_Request_SetExpressCheckout();
$request-&gt;addParameterValue(&#39;MaxAmount&#39;, $orderTotal);
$request-&gt;getParameterByNameAndIndex(&#39;MaxAmount&#39;, 0)-&gt;getAttribute(&#39;currencyID&#39;)-&gt;setValue(&#39;EUR&#39;);
//...
$result = $paypalObject-&gt;execute($request);
if(&#39;success&#39; === $result-&gt;getStatus()) {
      $parameters = $result-&gt;getParameters();
}
</pre>
<p>
	Ist doch deutlich einfacher, wenn einem das Request-Object dann auch noch sagen kann, welche Daten wohin m&uuml;ssen und Pflicht sind <img src='http://blog.actra.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>
	&nbsp;</p>
<p>
	Nun ja, viel erz&auml;hlt&#8230;bleibt die spannende Frage &quot;Wo gibt&#39;s das Teil&quot;?</p>
<p>
	Da muss ich leider (derzeit) entt&auml;uschen &#8211; bisher ist nur ein Bruchteil der PayPal-API-Funktionen umgesetzt, n&auml;mlich der, der Zahlungen erm&ouml;glicht.</p>
<p>
	Und bevor ich das Ganze auf die &Ouml;ffentlichkeit loslasse m&ouml;chte ich doch noch einige Funktionen mehr integrieren.</p>
<p>
	Dazu fehlt aber, wie &uuml;blich eben, die liebe Zeit.</p>
<p>
	Wer sich dennoch daf&uuml;r interessiert (oder eh nur den ExpressCheckout ben&ouml;tigt) darf sich gerne per eMail melden &#8211; mit kleinen Anreizen kriegt man mich bestimmt dazu, den aktuellen Stand zu &quot;&uuml;berlassen&quot; oder etwas Zeit f&uuml;r die Weiterentwicklung freizuschaufeln <img src='http://blog.actra.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>
	&nbsp;</p>
<p>
	Ach so, bevor ich es vergesse, das zweite derzeit aktiv genutzte &quot;Pro-Modul&quot; ist eine sehr praktische Klasse f&uuml;r mehrseitige Formulare, die es erlaubt, mehrseitige Formulare mit diversen Bedingungen zu erstellen.</p>
<p>
	So wird z.B. erm&ouml;glicht, einen Schritt mehrfach zu durchlaufen was z.B. f&uuml;r Konfigurationsassistenten sehr praktisch ist.</p>
<p>
	Ebenfalls sehr n&uuml;tzlich ist die Option, bestimmte Schritte in Abh&auml;ngigkeit von Angaben aus vorherigen Schritten zu gestalten oder sogar ganz zu entfernen.</p>
<p>
	Bevor nun jemand denkt, ich h&auml;tte da eine komplett neue Zend_Form-Implementation erstellt den kann ich beruhigen &#8211; <strong>exTSendPro_Form_MultiPage</strong> handlet nur die die &quot;Mehrseitigkeit&quot;, die Formulare werden weiterhin per Zend_Form erstellt und lediglich an <strong>exTSendPro_Form_MultiPage</strong> zur &quot;Verwaltung&quot; weitergereicht.</p>
<p>
	Wer dazu mehr erfahren m&ouml;chte der m&ouml;ge mich bitte kontaktieren &#8211; Telefonnummer und Mailadresse stehen ja im Impressum.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.actra.de/2009/10/22/extsendpro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

