Rozbudowujemy dalej naszego helpera o kolejne metody – toAttributes, toClasslist oraz metodę pomocniczą quote. Do dzieła.

Metoda quote będzie prywatna:

<?php
class Arr{
    
    //(...)
    private static function quote($value){
        return '"'.$value.'"';
    }
}

Prywatna dlatego, że klasa nazywa się Arr i jest helperem do tablic, zaś ta metoda nie wykonuje niczego na tablicach. Teraz piszemy metodę classlist:

<?php
class Arr{
    
    //(...)

    private static function quote($value){
        return '"'.$value.'"';
    }

    public static function toClasslist($array){
        $class_str = "class=";
        $class_str .= static::quote(implode(" ", $array));
        return $class_str;
    }
}

echo Arr::toClasslist(['btn', 'btn-danger']);
//class="btn btn-danger"

Jak widać prywatnych statycznych metod też używać możemy – ważne, że w obrębie klasy i tylko tam.

Napisanie metody toAttributes też trudne nie będzie:

<?php
class Arr{
    
    //(...)

    private static function quote($value){
        return '"'.$value.'"';
    }

    //(...)

    public static function toAttributes($array){
        $attribute_string = "";
        foreach($array as $attribute => $value){
            $attribute_string .= $attribute;
            $attribute_string .= "=";
            $attribute_string .= static::quote($value);
            if($attribute === array_key_last($array))
                break;
            $attribute_string .= " ";
        }
        return $attribute_string;
    }

    
}
echo Arr::toAttributes(["src"=>"sth", "alt"=>'sth alt', 'id' => 'myid']);
//src="sth" alt="sth alt" id="myid"

Najbardziej podchwytliwym elementem jest wyrwanie się z pętli przy ostatniej iteracji, aby niepotrzebnej spacji nie wrzucać na koniec.

Oczywiście – nie jest to jedyny słuszny sposób podejścia do tematu. Helpera będziemy rozbudowywać.