www.www.zaachi.com » Blog/Php » (Ne)Objektové programování v PHP

Jde ještě v dnešní době programovat v PHP neobjektově (imperativně)?
Zaujala mě diskuse na WebTrhu, ve které někteří uživatelé objevili objektové programování v PHP. http://webtrh.cz/6...ramovani
Konkrétně mě zaujalo několik výroků:
"(OOP) je nová metodika v programovaná založená na objektech"
- určitě ne. Možná ve spojení s PHP se o objektovém programování dříve nedalo moc mluvit, ale nová metodika?
"je to kvalitnější způsob zdrojového kódu programu, že je to jeden z novějších způsobů zápisu"
- kvalitnější ani ne, spíše záleží na samotném programátorovi, na jeho uvažování a zkušenostech. Objektový kód se dá napsat stejně kvalitně jako strukturální a naopak, důležité je se správně rozhodnout, kdy použít který způsob.
"ještě zhruba před 5 lety se OOP považovalo za velmi složitou tématiku"
- určitě ne. Na objektovém programování není nic složitého a nikdy nebylo. Možná nebylo tolik kvalitní literatury, ale i tak se objektové programování používalo v plné míře.
"A jaký je Váš názor na využívání objektově orientovaného programování?" (zřejmě myslel v PHP)
- ono to jde i jinak? Jde v PHP v dnešní době programovat efektivně bez používání některého kvalitního frameworku (== bez používání objektů)?
Znáte tyhle lidi? Kteří o sobě říkají "programátoři" a jediné co umí je několik základních příkazů v PHP a několik tagů v HTML, z čehož nejoblíbenější je příkaz echo, který řeší téměř vše:
echo "$variable: $_POST[post]";
A i když nic neumí, snaží se poučovat ostatní.
Ale samozřejmě ani objekty nejsou všechno. Ba naopak, nevhodně použité objekty jsou někdy spíš na škodu:
class GetAjaxValue
{
private $_get = array();
private $_id = array('val1', 'val2', 'val3');
private $_result = 0;
public function __construct($get = array())
{
$this->_get = $get;
$this->_Calc();
}
private function _Calc()
{
foreach( $this->_get as $id => $value )
{
if( array_key_exists($id, $this->_id) )
{
$this->_result += (int)$value;
}
}
}
public function GetResult()
{
if( $this->_result > 0 )
{
return $this->_result;
}
return false;
}
}
$template = new Template('ajax_result.tpl');
$ajax = new GetAjaxValue($_GET);
$template->SetVar('res', $ajax->GetResult());
Důležítá je logika člověka, a jeho schopnost učit se ze skušeností.
