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ć.