gpt4 book ai didi

php - 使用 get_declared_classes() 只输出我声明的类而不是 PHP 自动执行的类

转载 作者:可可西里 更新时间:2023-11-01 13:02:45 25 4
gpt4 key购买 nike

有点好奇,但我想用我用这样的东西声明的类制作一个数组

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 列出这些类的条件语句?

最佳答案

Reflection API 可以检测一个类是否是内部类。 ReflectionClass::isInternal检查类是否是内部的,而不是用户定义的:

$userDefinedClasses = array_filter(
get_declared_classes(),
function($className) {
return !call_user_func(
array(new ReflectionClass($className), 'isInternal')
);
}
);

上面的代码将检查并删除 get_declared_classes 返回的每个内部类,只留下用户定义的类。这样,您就不需要像本页其他地方所建议的那样创建和维护一组内部类。

关于php - 使用 get_declared_classes() 只输出我声明的类而不是 PHP 自动执行的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9108714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com