<?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>nerdcenter &#187; PHP</title>
	<atom:link href="http://nerdcenter.de/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://nerdcenter.de</link>
	<description>IT-Kniffe eines Webentwicklers.</description>
	<lastBuildDate>Sun, 10 Apr 2011 16:55:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</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>PHP: Bit Flags</title>
		<link>http://nerdcenter.de/php-bit-flags/</link>
		<comments>http://nerdcenter.de/php-bit-flags/#comments</comments>
		<pubDate>Fri, 06 Mar 2009 16:02:53 +0000</pubDate>
		<dc:creator>kcore</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[bit]]></category>
		<category><![CDATA[flags]]></category>

		<guid isPermaLink="false">http://nerdcenter.de/php-bit-flags/</guid>
		<description><![CDATA[

In manchen Fällen können Bit Flags in PHP-Skripten sehr nützlich sein. Etwa wenn es darum geht,
anhand eines &#8220;action&#8221;-Parameters zu entscheiden, welche Objekte instanziiert werden sollen. U.a. auf diese Weise kann
- sonst redundanter &#8211; Code gesparrt werden.
Kennern des binären Zahlensystems sollten also mal einen Blick darauf werfen. Alle anderen sollten dringend zu
diesen Kennern werden &#8211; das [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>In manchen Fällen können Bit Flags in PHP-Skripten sehr nützlich sein. Etwa wenn es darum geht,<br />
anhand eines &#8220;action&#8221;-Parameters zu entscheiden, welche Objekte instanziiert werden sollen. U.a. auf diese Weise kann<br />
- sonst redundanter &#8211; Code gesparrt werden.</p>
<p>Kennern des binären Zahlensystems sollten also mal einen Blick darauf werfen. Alle anderen sollten dringend zu<br />
diesen Kennern werden &#8211; das macht nicht nur das Verständniss des folgenden Codesnippets sondern das ganze (IT-) Leben einfacher <img src='http://nerdcenter.de/wp-includes/images/smilies/icon_wink.gif' alt="Icon Wink in " class='wp-smiley' /> </p>
<p>Das Prinzip ist eigentlich ganz einfach: Es werden einzelne Bits einer Integer Variablen gesetzt. Mit einer<br />
logisch AND Verknüpfung kann dann geprüft werden, ob einzelne Bits gesetzt wurden. Mit AND können Bits gelöscht werden,<br />
mit OR werden sie hinzu addiert. Jedes Bit stellt ein Flag dar. Ist ein Flag gesetzt werden entsprechende Aktionen ausgeführt.</p>
<p>Ein kleines Beispiel zu Bit Flags in PHP5:</p>
<pre>class example_controller {
	/**
	 * Flags set by $this-&gt;setFlags()
	 *
	 * @var int
	 */
	private		$flags			=	0;
	/**
	 * Instantiate the renderer object if this flag is set
	 *
	 * @var int
	 */
	const		FLAG_RENDERER		=	1;
	/**
	 * Do something cool if this flag is set
	 *
	 * @var int
	 */
	const		FLAG_DO_COOL_STUFF	=	2;
	/**
	 * Do even more cool stuff if this flag is set
	 *
	 * @var int
	 */
	const		FLAG_EVEN_MORE_STUFF	=	4;

	/**
	 * Initializes this object
	 *
	 */
	public function init() {
		$this-&gt;setFlags();
		$this-&gt;processFlags();
	}

	/**
	 * Setting the flags according to parameters
	 *
	 */
	private function setFlags() {
		if(!empty($_GET['action'])) {
			switch($_GET['action']) {
				case 'createFoo':
					$this-&gt;flags |= self::FLAG_RENDERER;
					break;
				case 'saveFoo':
					$this-&gt;flags |= self::FLAG_RENDERER;
					$this-&gt;flags |= self::FLAG_DO_COOL_STUFF;
					break;
			}
		}
	}

	/**
	 * Instantiates objects by flags
	 *
	 */
	private function processFlags() {
		// instantiate renderer
		if(($this-&gt;flags &#038; self::FLAG_RENDERER) > 0) {
			require_once(EXTENSION_LIBPATH . 'class.example_renderer.php');
			$this-&gt;renderer = example_renderer::getInstance();
			$this-&gt;renderer-&gt;init();
		}
		// do cool stuff
		if(($this-&gt;flags &#038; self::FLAG_DO_COOL_STUFF) > 0) {
			require_once('./lib/class.cool_stuff_factory.php');
			$myCoolStuff = cool_stuff_factory::makeInstance();
			$myCoolStuff-&gt;save();
		}
		// do even more cool stuff
		if(($this-&gt;flags &#038; self::FLAG_EVEN_MORE_STUFF) > 0) {
			require_once('./lib/class.even_more_stuff.php');
		}
	}
}</pre>
<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://nerdcenter.de/php-bit-flags/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpDocumentor bei SVN commit starten</title>
		<link>http://nerdcenter.de/phpdocumentor-bei-svn-commit-starten/</link>
		<comments>http://nerdcenter.de/phpdocumentor-bei-svn-commit-starten/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 18:58:48 +0000</pubDate>
		<dc:creator>kcore</dc:creator>
				<category><![CDATA[Linux / Unix]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[phpdocumentor]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://www.nerdcenter.de/phpdocumentor-bei-svn-commit-starten/</guid>
		<description><![CDATA[

Was ist Code ohne Dokumentation? Genau: total daneben.
Zum Glück gibt es ja praktische Helfer wie phpDocumentor, um aus Kommentaren eine richtig anständige Dokumentation zu zaubern. Aber das verdammte Ding nach jedem SVN commit anzustoßen ist auf Dauer ganz schön nervig&#8230;
Abhilfe verspricht der post-commit hook. In dem Wurzelverzeichnis jedes SVN Repositorys befindet sich ein Verzeichnis namens [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>Was ist Code ohne Dokumentation? Genau: total daneben.</p>
<p>Zum Glück gibt es ja praktische Helfer wie <strong>phpDocumentor</strong>, um aus Kommentaren eine richtig anständige Dokumentation zu zaubern. Aber das verdammte Ding nach jedem <strong>SVN commit</strong> anzustoßen ist auf Dauer ganz schön nervig&#8230;</p>
<p>Abhilfe verspricht der <strong>post-commit hook</strong>. In dem Wurzelverzeichnis jedes SVN Repositorys befindet sich ein Verzeichnis namens hooks. Dort können beliebige ausführbare Dateien hinterlegt werden, die je nach deren Dateinamen zu einem bestimmten Zeitpunkt ausgeführt werden (Beispiele / Templates sind bereits in dem Verzeichnis enthalten).<br />
Um phpDocumentor nach einem erfolgreichen SVN commit zu starten kann man ein Bash-script verwenden, indem man diesem den Dateinamen post-commit verpasst und das Executebit setzt (chmod +x foo).</p>
<p>Der Ablauf im Script ist dann wie folgt:<br />
1. SVN checkout anwerfen<br />
2. phpdoc -d anwerfen<br />
3. Quellcode löschen (bei Bedarf)</p>
<p>Das Script bekommt bei seinem Aufruf 2 Argumente: den absoluten Pfad zum betroffenen Repository sowie die Reversion nach dem commit.</p>
<p>Besonders praktisch finde ich daran die Möglichkeit den Quelltext zusammen mit der entsprechenden Dokumentation im Intranet zugänglich zu machen.</p>
<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://nerdcenter.de/phpdocumentor-bei-svn-commit-starten/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

