<?php
$source = <<< DATA
/**
*
*/
class Test {
/**
* Some very important comment here
*/
public const LOL = "damn";
/**
* Yet another,
* potentially multiline comment
*/
private const TEST = 5;
public const plop = "dong";
}
/**
*
*/
class Test2 {
/**
*
*/
public const LOL2 = "damn";
/**
*
*/
private const TEST2 = 5;
public const plop2 = "dong";
}
DATA;
$regex_class = '~
class\h*(?P<classname>\w+)[^{}]*
(\{
(?:[^{}]*|(?2))*
\})
~x';
$const_class = '~
^\h*
(?:(?P<comment>\Q/*\E(?s:.*?)\Q*/\E)(?s:.*?))?
(?:public|private)\h*const\h*
(?P<key>\w+)\h*=\h*(?P<value>[^;]+)
~mx';
$clean_comment = '~^\h*/?\*+\h*/?~m';
foreach ($matches as $match) {
foreach ($constants as $constant) {
echo "Class: {$match["classname
"]}, Constant Name: {$constant["key"]}, Constant Value: {$constant["value
"]}, Comment: $comment\n"; }
}
?>
PD9waHAKCiRzb3VyY2UgPSA8PDwgREFUQQovKioKKgoqLwpjbGFzcyBUZXN0IHsKCiAgIC8qKgogICAgKiBTb21lIHZlcnkgaW1wb3J0YW50IGNvbW1lbnQgaGVyZQogICAgKi8KICAgIHB1YmxpYyBjb25zdCBMT0wgPSAiZGFtbiI7CgogICAvKioKICAgICogWWV0IGFub3RoZXIsCiAgICAqIHBvdGVudGlhbGx5IG11bHRpbGluZSBjb21tZW50CiAgICAqLwogICAgcHJpdmF0ZSBjb25zdCBURVNUID0gNTsKCiAgIHB1YmxpYyBjb25zdCBwbG9wID0gImRvbmciOwp9CgovKioKKgoqLwpjbGFzcyBUZXN0MiB7CgogICAvKioKICAgICoKICAgICovCiAgICBwdWJsaWMgY29uc3QgTE9MMiA9ICJkYW1uIjsKCiAgIC8qKgogICAgKgogICAgKi8KICAgIHByaXZhdGUgY29uc3QgVEVTVDIgPSA1OwoKICAgcHVibGljIGNvbnN0IHBsb3AyID0gImRvbmciOwp9CkRBVEE7CgokcmVnZXhfY2xhc3MgPSAnfgoJCQkJCQkJCWNsYXNzXGgqKD9QPGNsYXNzbmFtZT5cdyspW157fV0qCgkJCQkJCQkJKFx7CgkJCQkJCQkJICAgICg/Oltee31dKnwoPzIpKSoKCQkJCQkJCQlcfSkKCQkJCQkJCQl+eCc7CgokY29uc3RfY2xhc3MgPSAnfgoJCQkJCQkJXlxoKgoJCQkJCQkJKD86KD9QPGNvbW1lbnQ+XFEvKlxFKD9zOi4qPylcUSovXEUpKD9zOi4qPykpPwoJCQkJCQkJKD86cHVibGljfHByaXZhdGUpXGgqY29uc3RcaCoKCQkJCQkJCSg/UDxrZXk+XHcrKVxoKj1caCooP1A8dmFsdWU+W147XSspCgkJCQkJCQl+bXgnOwoKJGNsZWFuX2NvbW1lbnQgPSAnfl5caCovP1wqK1xoKi8/fm0nOwoKcHJlZ19tYXRjaF9hbGwoJHJlZ2V4X2NsYXNzLCAkc291cmNlLCAkbWF0Y2hlcywgUFJFR19TRVRfT1JERVIpOwoKZm9yZWFjaCAoJG1hdGNoZXMgYXMgJG1hdGNoKSB7CglwcmVnX21hdGNoX2FsbCgkY29uc3RfY2xhc3MsICRtYXRjaFswXSwgJGNvbnN0YW50cywgUFJFR19TRVRfT1JERVIpOwoJZm9yZWFjaCAoJGNvbnN0YW50cyBhcyAkY29uc3RhbnQpIHsKCQkkY29tbWVudCA9IHRyaW0ocHJlZ19yZXBsYWNlKCRjbGVhbl9jb21tZW50LCAnJywgJGNvbnN0YW50WyJjb21tZW50Il0pKTsKCQllY2hvICJDbGFzczogeyRtYXRjaFsiY2xhc3NuYW1lIl19LCBDb25zdGFudCBOYW1lOiB7JGNvbnN0YW50WyJrZXkiXX0sIENvbnN0YW50IFZhbHVlOiB7JGNvbnN0YW50WyJ2YWx1ZSJdfSwgQ29tbWVudDogJGNvbW1lbnRcbiI7Cgl9Cn0KPz4=
Class: Test, Constant Name: LOL, Constant Value: "damn", Comment: Some very important comment here
Class: Test, Constant Name: TEST, Constant Value: 5, Comment: Yet another,
potentially multiline comment
Class: Test, Constant Name: plop, Constant Value: "dong", Comment:
Class: Test2, Constant Name: LOL2, Constant Value: "damn", Comment:
Class: Test2, Constant Name: TEST2, Constant Value: 5, Comment:
Class: Test2, Constant Name: plop2, Constant Value: "dong", Comment: