Je gebruikt nu een ternary syntax in PHP, die voor dergelijke in-line situaties zeer handig is.
Persoonlijk zou ik nooit no/yes als strings gebruiken, en gewoon op de booleans TRUE of FALSE afgaan. Straks gebruik je per ongeluk "Yes" dan dan sta je jezelf wezenloos te turen op een hoofdletter. ;-)
PHP 7.0 is al weer sinds januari end-of-life (en 7.1 wordt ook al niet meer actief onderhouden). Ik mag toch hopen dat elke hoster langzamerhand wel eens over is vanaf 5.6 ... Andersom: als je probleem dus is dat je hierop een foutmelding krijgt heb je eigenlijk een ander, groter probleem.
Je zou ook kunnen overwegen om dit soort (business) logica wat meer te scheiden van presentatie (logica).
Nu bepaal je inline welke class je gaat gebruiken, maar dit kun je ook vantevoren berekenen.
Daarnaast is het enige echte variabele deel de naam van de CSS-klasse. Je hoeft niet dynamisch te maken wat statisch is, en zou dit ook zo min mogelijk moeten doen om de scheiding tussen deze twee helder te houden. Je hebt PHP alleen nodig voor de dynamische delen, de statische delen zou je (en moet je, wat mij betreft) zoveel mogelijk buiten PHP houden.
Bijvoorbeeld:
<?php
$class = ($mijn_setting == 'yes' ? 'class-one' : 'class-two');
// deze informatie geef je bijvoorbeeld door aan een template
?><div class="<?php echo $class; ?>">
// doe iets
</div>
@Ozzie, dat kan natuurlijk ook, maar als je altijd (a ? b : c) gebruikt kun je ook makkelijk strings hier aan breien.
Ervoor: 'whatever'.(a ? b : c);
Of erna: (a ? b : c).'whatever';
Of allebei.
Het is niet verplicht om haken te zetten om het statement/predicaat "a", tenzij je dit doet om mogelijke dubbelzinnigheid in de voorrang van de onderdelen weg te nemen.