Autor Zpráva
Tori
Profil
Docela by mě zajímalo, co se děje uvnitř PHP při některých příkazech, jakým způsobem se co překládá (příklad). Jak na to?
Rozšíření vld by toto mělo umět, ale nepodařilo se mi ho rozběhnout (trochu mi u toho chybí README a popis CLI parametrů; a kdyby bylo potřeba něco restartovat tak to snad napíšou, doufam). Děkuju za případné rady.
juriad
Profil
Na stránkách píší: If you can't make it work then this tool is not for you. http://derickrethans.nl/projects.html#vld Dole je popis jak to nainstalovat.

Mě to pro stránku:
<?php

phpinfo();
vypíše https://gist.github.com/juriad/5442117
Tori
Profil
juriad:
No ano, kód se provede a zobrazí se výstup. To je totéž, jako když spustím php -r "phpinfo();"
Mně šlo ale o to, aby když budu mít skript např.:
<?php
echo '1';
echo '2';
echo '3';
, tak abych viděla, jestli se to interně přeloží na nějaké
var buffer = '1';
buffer += '2';
buffer += '3';
print buffer;
buffer = null;
, anebo jestli to bude fakt posílat na výstup po jednom znaku. Nepotřebuju to na nic důležitého, v podstatě jsem jen zvědavá, jak to je udělané.
Tu citovanou větu jsem taky četla, ale radši necitovala, abych ji nemusela i okomentovat.
juriad
Profil
Zprovozněno; stačilo přidat řádek "extension=vld.so" do php.ini a otočit apache. Potom už to bude fungovat. (Nechal jsem se původně uchlácholit tím, že to vrátilo hromadu dat, a on za to mohl příkaz phpinfo)

Pro skript:
<?php
$string = "abc, def (aaa, bbb, ccc), hij, klm";
echo $string;
$s = preg_replace("/,(?=[^)]*$|[^)]*\(.*)/", "\n", $string);
echo $s;

vypíše:
[adam@judy vld-0.11.2]$ php -dvld.active=1 pokus.php 
Finding entry points
Branch analysis from position: 0
Return found
filename:       /home/adam/vld-0.11.2/pokus.php
function name:  (null)
number of ops:  9
compiled vars:  !0 = $string, !1 = $s
line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   2     0  >   ASSIGN                                                   !0, 'abc%2C+def+%28aaa%2C+bbb%2C+ccc%29%2C+hij%2C+klm'
   3     1      ECHO                                                     !0
   4     2      SEND_VAL                                                 '%2F%2C%28%3F%3D%5B%5E%29%5D%2A%24%7C%5B%5E%29%5D%2A%5C%28.%2A%29%2F'
         3      SEND_VAL                                                 '%0A'
         4      SEND_VAR                                                 !0
         5      DO_FCALL                                      3  $1      'preg_replace'
         6      ASSIGN                                                   !1, $1
   5     7      ECHO                                                     !1
   7     8    > RETURN                                                   1

branch: #  0; line:     2-    7; sop:     0; eop:     8
path #1: 0, 
abc, def (aaa, bbb, ccc), hij, klmabc
 def (aaa, bbb, ccc)
 hij
 klm
Tori
Profil
Aha, děkuju, to mi nedošlo, že přidat do .ini.
Jan Tvrdík
Profil
Tori:
Pro jednoduché věci je IMHO nejlepší použít 3v4l.org/jA9Sm/vld#tabs.
Tori
Profil
Jan Tvrdík:
To jsem si mohla myslet, že už to někoho napadlo udělat online. :D Díky.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0