Explicationcode-Golf: une ligne PHP syntaxe
PHP a quelques trous dans sa syntaxe et de temps en temps dans le développement d'un programmeur étape en eux. Cela peut conduire à beaucoup de frustration car ces trous de syntaxe semblent exister sans raison. Par exemple, on ne peut pas facilement créer un tableau et accéder à un élément arbitraire de ce tableau sur la même ligne (func1()[100]
n'est pas une syntaxe PHP valide). La solution de contournement pour ce problème consiste à utiliser une variable temporaire et à diviser l'instruction en deux lignes, mais parfois cela peut conduire à un code très verbeux et maladroit.
Défi
Je connais quelques-unes de ces trous (je suis sûr qu'il ya plus). Il est assez difficile de trouver une solution, encore moins dans un style de code-golf. Le gagnant est la personne avec au moins le total des caractères pour les quatre trous de syntaxe.
Règles
- Déclaration doit être une ligne sous cette forme:
$output = ...;
, où...
ne contient pas de;
« s. - Utilisez uniquement les fonctions de bibliothèque standard (aucune fonction personnalisée ou
eval
autorisé) - L'instruction fonctionne de manière identique à la fonction supposée de la syntaxe non fonctionnelle (même en cas d'échec).
- L'instruction doit s'exécuter sans erreur de syntaxe de quelque sorte que ce soit avec
E_STRICT | E_ALL
.
trous de syntaxe
$output = func_return_array()[$key];
- accéder à un décalage arbitraire (string
ouinteger
) du réseau de retour d'une fonction$output = new {$class_base.$class_suffix}();
- concaténation de chaînes arbitraires utilisées pour créer une nouvelle classe$output = {$func_base.$func_suffix}();
- concaténation de chaîne arbitraire appelée comme fonction$output = func_return_closure()();
- appeler une fermeture étant retourné d'une autre fonction
Tableau déréférencement (votre 1. trou de syntaxe) a déjà été engagée à tronc par Felipe Pena. – Artefacto
@Artefacto C'est une excellente nouvelle! Les derniers chuchotements que j'ai entendus ont été ignorés. Avez-vous un lien pour cela? –
Je pense que cet exercice est inutile. Moins de caractères est différent de plus clair/plus efficace. – Artefacto