PHP je věda

Objektově orientované programování nejen v PHP

Objekt jako Špageti

Ve světě PHP je velmi častým zlozvykem, že metody zneužívají vlastnosti objektů jako mezipaměť, kam si výsledek uloží pro další operaci. Tento postup sice využívá objekty, ale má s OOP velmi málo společného! Následující kód může být na první pohled pěkný, je pěkně formátovaný, dokonce má PHPDocs, ale to co se v něm děje připomíná špageti. Metody nemají žádné vstupní nebo výstupní parametry a abychom mohli s třídou pracovat musíme znát celou její implementaci, vůbec není na první pohled vidět, kde končí výsledek výpočtu, jak je to možné že najednou jsou proměnné value1 a value2 obsazené apod. Samozřejmě, lze takto programovat, ale není to standardní a pokud k projektu sedne jiný programátor, bude mít velké problémy se zorientovat.

<?php
class SpagettiCalculator
{
 
    /**
     * @var int
     */
    protected $value1;
 
    /**
     * @var int
     */
    protected $value2;
 
    /**
     * @var int
     */
    public $plus;
 
    /**
     * @var int
     */
    public $minus;
 
    public function complicatedCalcualtion()
    {
        $this->prepareVariables();
        $this->plus  = $this->value1 + $this->value2;
        $this->minus = $this->value1 - $this->value2;
    }
 
    public function prepareVariables()
    {
        $this->value1 = 6;
        $this->value2 = 7;
    }
}
 
$spatettiCalculator = new SpagettiCalculator();
 
$spatettiCalculator->complicatedCalcualtion();
 
echo $spatettiCalculator->plus . PHP_EOL;
echo $spatettiCalculator->minus;