Немного любопытно, но я хочу создать массив из классов, которые я объявил, используя что-то вроде этого
foreach(get_declared_classes() as $class)
$c[] = $class;
print_r($c);
, единственная проблема с этим состоит в том, что я получаю что-то вроде поверх загруженного классы:
stdClass
Exception
ErrorException
Closure
DateTime
DateTimeZone
DateInterval
DatePeriod
LibXMLError
LogicException
BadFunctionCallException
BadMethodCallException
DomainException
InvalidArgumentException
LengthException
OutOfRangeException
RuntimeException
OutOfBoundsException
OverflowException
RangeException
UnderflowException
UnexpectedValueException
RecursiveIteratorIterator
IteratorIterator
{...}
SQLiteResult
SQLiteUnbuffered
SQLiteException
SQLite3
SQLite3Stmt
SQLite3Result
XMLReader
XMLWriter
XSLTProcessor
ZipArchive
есть ли функция, которая загружает только классы, специфичные для пользователя, а не классы, загруженные системой? или, возможно, выражение условия, которое ограничивает foreach
перечислением этих классов?
ответ @Gordon довольно хорош, и решение @Dmitry также хорошо, но это работает, только если Ваши классы были в различных файлах, и Вы включали их:
$predefinedClasses = get_declared_classes();
include('Myclass.php'); // This will show
class A {} // This will not show
print_r(array_diff(get_declared_classes(), $predefinedClasses));
Однако, если у Вас есть классы в Вашем файле около тех, Вы включали и если Вы не хотите использовать Reflection
существует (сумасшедшая) идея, которую я придумал:
$predefined_classes = get_declared_classes();
declare(ticks=1) {
include 'Myclass.php';
class A {}
print_r(array_diff(get_declared_classes(), $predefined_classes));
}