(PECL parsekit:0.2-1.2)
parsekit_compile_string — Compile une chaîne de code PHP et retourne le tableau d'opcode résultant
Cette fonction est EXPERIMENTALE . Cela signifie que le comportement de cette fonction, son nom et, concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS ! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.
Une chaîne contenant du code PHP. Similaire à l'argument de eval() .
Un hash 2D des erreurs (incluant les erreurs fatales) rencontrées pendant la compilation. Retourné par référence.
Soit PARSEKIT_QUIET , soit PARSEKIT_SIMPLE . Pour produire plusieurs degrès de retour dans la chaîne retournée.
Retourne un tableau complexe multi-dimensionnel, structuré comme ci-dessous.
Exemple 1875. Exemple avec parsekit_compile_string()
<?php
$ops
=
parsekit_compile_string
(
'
echo "Foo\n";
'
,
$errors
,
PARSEKIT_QUIET
);
var_dump
(
$ops
);
?>
L'exemple ci-dessus va afficher :
array(20) { ["type"]=> int(4) ["type_name"]=> string(14) "ZEND_EVAL_CODE" ["fn_flags"]=> int(0) ["num_args"]=> int(0) ["required_num_args"]=> int(0) ["pass_rest_by_reference"]=> bool(false) ["uses_this"]=> bool(false) ["line_start"]=> int(0) ["line_end"]=> int(0) ["return_reference"]=> bool(false) ["refcount"]=> int(1) ["last"]=> int(3) ["size"]=> int(3) ["T"]=> int(0) ["last_brk_cont"]=> int(0) ["current_brk_cont"]=> int(-1) ["backpatch_count"]=> int(0) ["done_pass_two"]=> bool(true) ["filename"]=> string(17) "Parsekit Compiler" ["opcodes"]=> array(3) { [8594800]=> array(5) { ["opcode"]=> int(40) ["opcode_name"]=> string(9) "ZEND_ECHO" ["flags"]=> int(768) ["op1"]=> array(3) { ["type"]=> int(1) ["type_name"]=> string(8) "IS_CONST" ["constant"]=> &string(4) "Foo " } ["lineno"]=> int(2) } ["859484C"]=> array(6) { ["opcode"]=> int(62) ["opcode_name"]=> string(11) "ZEND_RETURN" ["flags"]=> int(16777984) ["op1"]=> array(3) { ["type"]=> int(1) ["type_name"]=> string(8) "IS_CONST" ["constant"]=> &NULL } ["extended_value"]=> int(0) ["lineno"]=> int(3) } [8594898]=> array(4) { ["opcode"]=> int(149) ["opcode_name"]=> string(21) "ZEND_HANDLE_EXCEPTION" ["flags"]=> int(0) ["lineno"]=> int(3) } } }
parsekit_compile_file() |