рдЧреНрд░рд╛рдлрд╡рд┐рдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рднреАрддрд░ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛

рдЖрд░ред рдорд╛рд░реНрдЯрд┐рди рдХреА рдкреБрд╕реНрддрдХ "рдХреНрд▓реАрди рдХреЛрдб" рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЕрдкрдиреА рдкреБрд░рд╛рдиреА, тАЛтАЛрдмрдбрд╝реА рдФрд░ рдЧрдВрджреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдФрд░ рдореИрдВ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдХреИрд╕реЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╡рд┐рдзрд┐ рдФрд░ рдХреНрд╖реЗрддреНрд░ рдкрд░рд╕реНрдкрд░ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред PhpCallGraph , рдЬрд▓реНрджреА рд╕реЗ google, рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрд╛ (рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде xdebug), рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ рдЯреНрд░реЗрд╕ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдПрдХ рд╡рд░реНрдЧ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЕрдкрдирд╛ рд╕рдорд╛рдзрд╛рди рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдФрд░ рдпрд╣реА рд╣реБрдЖред

рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ , рдЖрдкрдХреЛ рдЧреНрд░рд╛рдлрд╡рд┐рдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:
рдкрд╣рд▓реЗ, рдЪрд▓рд┐рдП рдбреНрд░рд╛рдлреНрдЯреНрд╕рдореИрди рдХреНрд▓рд╛рд╕ рдХрд╛ рд╣реА рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВред
require "Class2GV.php"; $c2g = new Class2GV("C:\\Program Files\\GraphViz 2.28\\bin"); //,     $c2g->showVariables(true); //-   ,      $svg = $c2g->convert("Class2GV.php", "dot"); //   dot,    header("Content-type: image/svg+xml"); readfile($svg); 


Class2GV.png


рд╣рд░реЗ рд░рдВрдЧ рдХреА рдЖрдпрддреЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ, рдкреАрд▓реЗ рд░рдВрдмрд▓ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИрдВ (рд╡реЗ рдпрд╣рд╛рдБ рдирд╣реАрдВ рд╣реИрдВ), рд▓рд╛рд▓ рджреАрд░реНрдШрд╡реГрддреНрдд рдирд┐рдЬреА рд╣реИрдВ, рдиреАрд▓реЗ рдЖрдпрддреЗрдВ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВ (рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдпрд╛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡реЗ рдпрд╣рд╛рдБ рднреА рдирд╣реАрдВ рд╣реИрдВ)ред рдЧреНрд░реЗ рдЖрдпрдд рдЪрд░ рд╣реИрдВред
рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдореЗрд╢рд╛ рдПрдХ рддреАрд░, рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рд╡рд╣рд╛рдБ рдПрдХ рдмрд▓реНрдХрд┐ рдЬрдЯрд┐рд▓ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд╛рдлреА рддрд╛рд░реНрдХрд┐рдХ рд╡рд░реНрдЧ рд╕рдВрд░рдЪрдирд╛ рд╣реИред рд╡реИрд╕реЗ, рдбреЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрдзрд┐рдХ "рд╕рд╣реА" рдХрдХреНрд╖рд╛рдПрдВ рдЕрдЪреНрдЫреА рд▓рдЧрддреА рд╣реИрдВ (рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдкрджрд╛рдиреБрдХреНрд░рдо рд╕реЗ рдЦреАрдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реБрдП), рдЬрдмрдХрд┐ рдЕрдзрд┐рдХ рдЕрд░рд╛рдЬрдХ рд╡рд░реНрдЧ рдХреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╕рд╛рдл-рд╕реБрдерд░рд╛ рдпрд╛ fdp / sfdp (рддреАрд░ рдХреА рджрд┐рд╢рд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛) рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рдПрдХ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рджрд╛рдИрдВ рдУрд░ рдПрдХ PHP рдлрд╝рд╛рдЗрд▓ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рдХрд╛рдлреА рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдХреНрд╖реЗрддреНрд░ рд╣реИ (рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд get_all_tokens() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ), рдФрд░ рдЖрдк рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдореЗрдВ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЪрд░ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЧреНрд░рд╛рдл рдкрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИред
Class2GV_wv.png


рдореИрдВрдиреЗ рдЗрддрдирд╛ рдЕрдиреБрдХреВрд▓рди рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХрдХреНрд╖рд╛ рдмрдврд╝рдиреЗ рд▓рдЧреА, рддреЛ рдпрд╣ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╣рд╛рдБ рдХреБрдЫ рдФрд░ рд╡рд░реНрдЧ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред

Source: https://habr.com/ru/post/In127288/


All Articles