<?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>Kubánek.org &#187; framework</title>
	<atom:link href="http://kubanek.org/blog/stitky/framework/feed/" rel="self" type="application/rss+xml" />
	<link>http://kubanek.org</link>
	<description>Blog o programování, volejbale a zážitcích ze života</description>
	<lastBuildDate>Mon, 10 May 2010 20:50:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Pravé objektově orientované programování v PHP</title>
		<link>http://kubanek.org/blog/prave-objektove-orientovane-programovani-v-php/</link>
		<comments>http://kubanek.org/blog/prave-objektove-orientovane-programovani-v-php/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 13:48:50 +0000</pubDate>
		<dc:creator>Lukáš Kubánek</dc:creator>
				<category><![CDATA[Informační technologie]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[Nette Framework]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://localhost/kubanek.org/?p=89</guid>
		<description><![CDATA[Kdo by neznal čím dál více se rozšiřující serverový skriptovací jazyk s nedomyšlenou rekurzivní zkratkou PHP, který je známý nejen jako výukový trenažér pro amatérské webmastery. Statistiky ukazují, že dnešní hostingový program bez podpory PHP je buď ten nejlevnější nebo s chybou v metrixu. S příchodem páté verze se v PHP objevuje objektová syntaxe a [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Kdo by neznal čím dál více se rozšiřující serverový skriptovací jazyk s nedomyšlenou rekurzivní zkratkou <a href="http://php.net/">PHP</a>, který je známý nejen jako výukový trenažér pro amatérské webmastery. Statistiky ukazují, že dnešní hostingový program bez podpory PHP je buď ten nejlevnější nebo s chybou v metrixu. S příchodem páté verze se v PHP objevuje objektová syntaxe a PHP se mění z výukového trenažéru na kvalitní objektový serverový skriptovací nástroj, se kterým lze dělat velké věci. Protože PHP projekty z našeho světa jen tak nezmizí, rozhodl jsem se sepsat článek, který kategorizuje a odděluje od sebe jednotlivé přístupy tvorby PHP projektů.</p>
<h2>A: Strukturální přístup</h2>
<p style="text-align: justify;">Každý, kdo zná PHP, se ve svém životě setkal s koncepcí PHP projektíku založeného na statických stránkách, jejichž obsah se přepíná pomocí jediného GET parametru a jazykového konstruktu <em>include</em>. V lepších případech je využita databáze nebo zápis do souborů. Takovýto projekt využívá pouze strukturálních funkcí, nejčastěji implementovaných přímo v PHP.</p>
<p style="text-align: justify;">PHP projekt založený na strukturálním přístupu obvykle postrádá logiku a je nejčastěji založen na práci s textem. Vůbec nechci tento přístup odsuzovat, naopak, takový přístup disponuje největší perzistencí v porovnání s dalšími přístupy, ale hodí se jen na malé, velmi jednoduché projekty.</p>
<h2>B: Objektově strukturální přístup</h2>
<p style="text-align: justify;">Ne nadarmo se řadí PHP mezi multiparadigmatické programovací jazyky. Hlavně několik posledních let se začíná rozrůstat síla PHP frameworků, které programátorům uzpůsobují a mnohdy ulehčují jejich programátorský styl. Z těch nejznámějších zmíním <a href="http://framework.zend.com/">Zend Framework</a>, <a href="http://cakephp.org/">CakePHP</a> nebo český <a href="http://nettephp.com/">Nette Framework</a>. PHP frameworky jsou nejčastěji psané v objektovém kódu a založené na MVC architektuře.</p>
<p style="text-align: justify;">Při tvorbě PHP projektu, který využívá některý z objektově psaných frameworků, je kód projektu psaný samozřejmě také objektově. Důležité je, uvědomit si, že pokud je objektový kód, nemusí být objektová i logika. V objektově strukturálním přístupu aplikace logiku postrádá a z pohledu architektury je stále strukturální. Aplikace pouze plní za sebou seřazené a do tříd obalené metody. Takovýmto přístupem jsou koncipovány středně složité projekty, které vyžadují složitější komponenty (například z knihovny frameworku) a usnadňují práci programátorovi, mnohdy bohužel na úkor perzistence.</p>
<h2>C: Pravý objektový přístup</h2>
<p style="text-align: justify;">Pokud chceme programovat náš PHP projekt opravdu objektově, musíme naučit systém přemýšlet. Proto v pravém objektovém přístupu využíváme nejen objektové syntaxe, ale i objektové logiky, na které je postavena systémová architektura. Nejen že systém využívá objektového kódu některého frameworku, ale pracuje i s našimi doménovými objekty, které tvoří problémovou doménu projektu. Tyto objekty tvoří <em>model </em>MVC architektury a jsou nejčastěji mapovány do databází pomocí některého ORM nástroje, který může být integrován přímo do frameworku.</p>
<p style="text-align: justify;">Takový přístup bychom měli zvolit, pokud se jedná o složitější PHP projekt. Vzniklý systém nevyniká perzistencí, proto je nutno ho co možná nejlépe optimalizovat (databázové dotazy – kvalitní ORM, dobře navrhnutá architektura, cache…), ale vyniká správností objektového konceptu.</p>
<p style="text-align: justify;">Musím ještě podotknout, že žádný z přístupů není nejhorší a žádný nejlepší, protože vždy záleží na konkrétním PHP projektu. I když osobně preferuji pravý objektový přístup, tak se mi zamlouvá i strukturální přístup pro jednoduché projekty. Nejmíň se mi ale zarývá pod nehty objektově strukturální přístup, protože nejsem schopný kloubit správný objektový koncept a logicky strukturální přístup. Je to jako duševní bariéra. Ale každému vyhovuje něco jiného.</p>
]]></content:encoded>
			<wfw:commentRss>http://kubanek.org/blog/prave-objektove-orientovane-programovani-v-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
