SBP est un compilateur intégré à SelfBuild qui vous permet d'écrire les syntaxes rébarbatives de PHP de manière beaucoup plus courtes et transparentes, d'ommettre les accolades, les points-virgules, d'utiliser des modèles de fichier générés en fonction du noms, chemin ou contenu du fichier et bien plus encore !
SBP is a compiler embedded in SelfBuild that allow you to code the redundant PHP syntaxes in a very shorter and cleaner way, without braces or semi-colons, using file patterns generated from there names, path or contenu. And it's just the begenning!
SBP s'ajoute à la collection de compilateurs déjà intégrés dans SelfBuild : CoffeScript pour le JavaScript, Stylus, Less et CSSB pour le CSS.
SBP is part of the SelfBuild compilers collection that already include: CoffeScript for JavaScript, Stylus, Less and CSSB for CSS.
Dernier taux de compression calculé : 82%
Last compression rate recorded: 82%
.src/short_tag.php |
=> |
short_tag.php |
Utilisez les short-tags sans complexe, ils seront uniformisés par SBP lors de l'enregistrement évitant ainsi évitant ainsi toute erreur due à une désactivation des short-tags dans la configuration.
Never mind any longer about using short-tag, they will be completed for you.
Les points-virgules de fin de ligne peuvent aussi être supprimés sans problème.
Semi-colons are not needed at the end of lines.
Le commentaire /* Generated By SBP */
permet à SelfBuild de détecter les fichiers générés par SBP et de charger
le cas échéant le fichier source dans l'éditeur.
The comment /* Generated By SBP */
allow SelfBuild to dect files generated by SBP and load them as it.
.src/if_else.php |
=> |
if_else.php |
Toutes les accolades peuvent être omises du moment que l'indentation aligne correctement les blocs et leur contenu.
All braces can be omitted until as long as the indentation is respected.
Une tabulation et 4 espaces sont considérés comme équivalents par SBP.
SBP consider 4 spaces and 1 tab equivalent.
Les accolades sont rajoutées de manières à ce que les numéros de lignes des fichiers sources et compilés correspondent. Ainsi si une erreur Warning survient à la ligne 5 du fichier PHP compilé. Cela correspond bien à la ligne 5 du fichier SBP source.
Braces are completed in keeping the line numbers from source and compiled files match. So if an error occurs line 5 in the PHP generated file, it comes from line 5 in the SBP source file.
Les parenthèses après if, elseif, for, while, foreach, function, etc. peuvent être omises tant que la condition ou l'expression à mettre entre parenthèses est écrite sur une seule ligne.
Parentheses after if, elseif, for, while, foreach, function, etc. can be omitted as long as the condition take only one line.
.src/switch.php |
=> |
switch.php |
Les raccourcis :=
, ::
, d:
et :;
génèrent respectivement switch
,
case
, default
et break
.
Il faut cependant que chacun de ses symboles soit précédé d'au moins un espace, tabulation ou saut de ligne (ceci permet entre autre à SBP de
différencier le cas où ::
appelle case
du cas où il sépare un nom de classe d'une constante ou méthode, par
exemple dans MaClasse::maMethode()
).
Shortcuts :=
, ::
, d:
and :;
generate respectivly switch
,
case
, default
and break
.
However, they must be preceded by a space, tab or new line to let SBP differenciate them from other uses (as MyClass::myMethod()
).
Pour éviter tout comportement erroné, ces raccourcis doivent terminer une ligne. Et les lignes terminant par :=
ou
::
ne doivent contenir qu'une seule expression.
To prevent all unexpected behaviour, this shortcuts must end the line. And lines ending with :=
or
::
must contains only one expression.
.src/assignation.php |
=> |
assignation.php |
Il est relativement fréquent d'avoir une variable comme premier paramètre d'une fonction et d'utiliser cette même variable pour récupérer le résultat de la fonction.
Often, a variable is the first argument of a function and the recip for the returned value of this function.
En SBP, il est possible de n'écrire que la fonction et de précéder le premier paramètre de **
qui génère alors
automatiquement une assignation avant la fonction ou d'utiliser le symbole d'assignation **=
.
With SBP, you can use **
in the function to assign the result of the function to the same variable as the
one passed in the first argument. Or you can use **=
to pass the variable as the left side as the first argument
of the following function ang get the result in it.
"Variable" est à comprendre au sens large, vous pouvez également passer des attributs d'objet, des valeurs d'array, etc.
You can also pass object member, array property, etc.
.src/assignation_operateur.php |
=> |
assignation_operateur.php |
En PHP, il est possible d'utiliser certains opérateurs directement dans l'assignation. Mais pourquoi se limiter à certains et
pourquoi ne pourrait-on pas TOUS les utiliser dans les assignations comme en Ruby par exemple ? SBP abolit toute
discrimination et permet d'utiliser n'importe quel opérateur suivi du symbole =
pour une assignation raccourcie.
Les alias d'opérateurs is
(pour ==
), not
(pour !=
),
lt
(pour <
) et gt
(pour >
) permettent d'éviter les conflits avec
les opérateurs <=
, >=
===
et !==
.
PHP allow to use some operators in the assignation. But why only some of them? Why could we not use ALL of them in
assignations like in Ruby? SBP abolish this discrimination and let you use any operated followed with =
for a short assignation.
Aliases is
(for ==
), not
(for !=
),
lt
(for <
) and gt
(for >
) allow you to prevent from conflicts
with <=
, >=
===
and !==
.
En cas de problème de précédence des opérateurs ou des parenthèses, vous pouvez entourer l'opérateur raccourci et l'expression ou valeur à droite de l'assignation de parenthèses. La partie à gauche de l'assignation est alors insérée dans cette parenthèse. Ces parenthèses sont nécessaires pour les opérateurs or, and et xor, car l'assignation est prioritaire sur ces opérateurs.
A problem with precedence? You can wrap the short operator and the expression or the value on the right side wiht parentheses. The left side part will be inserted in the parentheses. They will be needed with or, and and xor, as the assignation has the precedence on them.
Si vous écrivez $a and= true;
sans les parenthèses cela transformé en $a = $a and true;
or l'assignation
étant prioritaire, cela équivaut à : ($a = $a) and true;
ce qui n'est probablement pas
ce que vous souhaitez. Pour tous les autres opérateurs, l'assignation n'est pas prioritaire.
If you write $a and= true;
with no parentheses, it will be replaced with $a = $a and true;
.
As the assignation comes first, it's equivalant to: ($a = $a) and true;
wich is probably not what you
wanted to do. For other operators, the assignation is not priority.
.src/assignation_seul.php |
=> |
assignation_seul.php |
Les opérateurs one-hand ne sont pas en reste. Suivis d'un point-virgule ou d'une nouvelle ligne, ils permettent d'être appliqués directement à une variable.
One-hand operator can also be self-asigned. If they are followed by a semi-colon or a new line the result is assigned to the input variable.
.src/fonction.php |
=> |
fonction.php |
Remplaçons function
par f
et return
par <
(nécessite que <
ne soit précédé
d'aucune expression sur la même ligne sans quoi il sera considéré comme un signe inférieur par SBP).
Let's replace function
with f
and return
with <
(if <
is not preceded by an
expression, else it will be interpreted as lower than).
Pour les fonctions variables ou anonymes (disponibles depuis PHP 5.3), utilisez f°
.
For anonymous functions (available since PHP 5.3), use f°
.
Pour ne définir une fonction que si elle n'a pas déjà été définie, utilisez @f
.
To define a function only if it not already exists, use @f
.
.src/classe.php |
=> |
classe.php |
Remplaçons extends
par :
et le mot-clé class
aux oubliettes !
Let's replace extends
with :
and forget the class
keyword!
.src/classe_methodes.php |
=> |
classe_methodes.php |
Définition de méthodes avec +
, *
et -
(s+
, s*
et s-
pour les méthodes statiques).
<
(compilé en return
)
est également disponible dans les méthodes.
Define the methods with +
, *
and -
(s+
, s*
and s-
for static methods).
<
(compiled into return
) is also available
in methods.
.src/classe_attributs.php |
=> |
classe_attributs.php |
Déclaration des attributs avec les mêmes symboles : +
, *
et -
.
Same symbols for attributes: +
, *
and -
.
.src/classe_this.php |
=> |
classe_this.php |
Récupération des attributs et méthodes de l'objet $this avec >
.
Call methods and attrbiute inside the classe with >
instead of $this
.
.src/classe_constante.php |
=> |
classe_constante.php |
const
est ajouté automatiquement devant un nom en majuscules suivi de =
.
Pour récupérer une constante dans la classe où elle a été déclarée (ou une classe fille), il suffit
de faire :NOM_DE_LA_CONSTANTE
qui sera remplacé à la compilation par
static::NOM_DE_LA_CONSTANTE
.
const
is automatically added before an uppercase name followed by =
.
To get this constant inside the class or a subclass of it, use :CONSTANT_NAME
,
it will be compiled into static::CONSTANT_NAME
.
.src/server.php |
=> |
server.php |
SBP propose un accès rapide à plusieurs valeurs de $_SERVER
. __FILE et __DIR sont
également disponible et renvoient respectivement le fichier SBP en cours d'exécution et le
dossier contenant ce dernier. Notez que les constantes __FILE__ et __DIR__ renvoient quant à elles
les chemins du fichiers PHP compilés et le dossier contant ce fichier.
SBP propose a short way to get some of the $_SERVER
values. __FILE and __DIR
are also available and return respectivly the SBP file path wich is running and the directory
where this file is. Note that __FILE__ and __DIR__ return different paths, there give the
compiled PHP file path and its directory.
Il est déconseillé de modifier directement les variables super-globales ($_GET, $_POST, $_SERVER, etc.), par conséquent, nous déconseillons d'assigner de nouvelles valeurs aux constantes SBP. La modification de __FILE ou __DIR provoquera une erreur. La modification des autres constantes est possible actuellement mais pourrait provoquer une erreur dans une version ultérieure.
You can modify super-global variable ($_GET, $_POST, $_SERVER, etc.), but you should better copy them and edit the copied variables. The same goes for SBP constants, you should avoid to assign a value to them. Modify __FILE or __DIR will throw an error. Other constants can be modified in this version but maybe not in a next version.
.src/array_short_syntax.php |
=> |
array_short_syntax.php |
Une syntaxe ultra courte pour les arrays dont les clés sont statiques et sans caractères spéciaux.
An ultra-short syntax for arrays with static keys.
.src/custom_operators.php |
=> |
custom_operators.php |
Pour créer un nouveau mot-clé et lui définir un comportement, il suffit de créer une fonction __sbp_key_word
en remplçant "key_word" par le mot-clé en question.
To create a new key word and define a behaviour to it, create a __sbp_key_word
function
and replace "key_word" with you own keyword.
.src/super_methods.php |
=> |
super_methods.php |
L'opérateur -->ma_fonction
permet d'exécuter ma_fonction
sur la variable ou la
valeur qui précède. Si la valeur est un array
, la fonction array_ma_fonction
est utilisée si elle existe ; si la valeur est de type string
, la fonction preg_ma_fonction
est utilisée si elle existe, sinon str_ma_fonction
si elle existe et la valeur est passée en
premier paramètre (sauf pour replace, replace_callback et filter : troisième paramètre et pour split, match et match_all :
second paramètre).
The -->my_function
operator will execute my_function
on the previous variable or value.
If the value is an array
, the function array_my_function
will be used if it exists;
if the value is a string
, the function preg_my_function
will be used if it exists,
else str_my_function
if it exists and the value is passed as the first argument (except for
replace, replace_callback and filter: third argument and for split, match and match_all:
second argument).
Dans tous les autres cas, ma_fonction
est utilisée et la valeur passée en premier paramètre.
In any other case, my_function
is used and the value is the first argument.
Les super-méthodes utilisent Sbp\Handler, il faut donc inclure Sbp/Handler.php dans vos scripts, ou utiliser Sbp via Composer.
Super-methods use Sbp\Handler, so you must include Sbp/Handler.php in your scripts, or use Sbp via Composer.
.src/regex.php |
=> |
regex.php |
La syntaxe Java/JavaScript peut être utilisée pour créer une chaîne contenant une expression régulière.
The Java/JavaScript syntax can be used to create a regular expression contained in a string.
.src/phpunit.php |
|| V |
phpunit.php |
Une syntaxe claire et légère pour les tests unitaires PHPUnit.
A clear and short syntax for PHPUnit unit tests.
.class.php.container
.src/ma_classe.class.php |
=> |
ma_classe.class.php |
Le modèle .extension.container est appliqué lors de l'enregistrement à tous les fichiers portant l'extension .extension et pour lesquels vous avez activé SBP via l'icône .
The .extension.container is applied on .extension files when SBP is selected via the button .
Les sauts de lignes précédents {content}
sont remplacés par des espaces de sorte que les numéros de lignes du fichier
PHP compilés correspondent aux numéros de lignes du fichier SBP source.
New lines before {content}
are replaced with spaces to keep the line numbers of the SBP source and PHP compiled
files match.
Des tags de remplacement sont alors disponibles dans ces containers :
{file}
est remplacé par le chemin du fichier (chemin absolu sur l'espace FTP){basename}
est remplacé par le nom du fichier{name}
est remplacé par le nom du fichier sans l'extension{camelCase}
est remplacé par le nom du fichier sans l'extension en camelCase (un-deux_trois devient unDeuxTrois){CamelCase}
est identique à {camelCase}
mais avec la première lettre en majuscule (un-deux_trois devient UnDeuxTrois){content}
est remplacé par le contenu du fichier, si {content}
est indenté, son indentation est ajoutée à chaque ligne
du contenu.Replaced tags are available in containers:
{file}
is replaced with the current file path (absolute path from the FTP root){basename}
is replaced with the current file name{name}
is replaced with the current file name with no extension{camelCase}
is replaced with the current file name with no extension in camelCase (one-two_three will be oneTwoThree){CamelCase}
is like {camelCase}
but with the first letter will be in uppercase (one-two_three will be OneTwoThree){content}
is replaced with the current file content, if {content}
is indented, this indent is added to each line of
its content.
Il manque quelque chose ?
It's missing something?
Des idées, suggestions, vous rencontrez des difficultés à l'utilisation ? Discutons-en ci-dessous.
Ideas, suggestions, any trouble in using it? Let's talk about it below.
N'hésitez pas à indiquer les syntaxes, fonctions et parties les plus récurrentes de vos codes PHP, pour orienter les choix des prochains ajouts de SBP.
Do not hesite to wich syntaxes, functions or code blocks you use most in you PHP codes to help us to choose the next features we'll implement.
comments powered by Disqus