Während der PHP -Entwicklung definieren wir häufig viele Konstanten, um die Lesbarkeit und Wartbarkeit des Codes aufrechtzuerhalten. Beispielsweise nimmt die Anzahl der Konstanten allmählich zu, und wir müssen manchmal eine bestimmte Klasse von Konstanten für einen bestimmten Zweck von allen definierten Konstanten herausfiltern. Zu diesem Zeitpunkt sind die beiden Funktionen get_defined_constants () und array_filter () nützlich.
get_defined_constants () ist eine integrierte Funktion, die alle definierten Konstanten im aktuellen Skript erhält. Diese Funktion gibt ein mehrdimensionales assoziatives Array zurück, das standardmäßig von der Kategorie gruppiert wird, zu der die Konstante gehört (z. B. Kern , Benutzer , Datum usw.).
Beispiel der Nutzung:
print_r(get_defined_constants());
Ausgabe (Teil):
Array
(
[Core] => Array
(
[E_ERROR] => 1
[E_WARNING] => 2
)
[user] => Array
(
[MY_APP_ENV] => 'production'
)
)
Wenn der wahre Parameter übergeben wird, wird eine durch Klassifizierung gruppierte Konstante zurückgegeben. Wenn falsch oder weggelassen, wird ein abgeflachtes assoziatives Array zurückgegeben.
Array_Filter () ist ein weiteres leistungsstarkes Tool, um eine Rückruffunktion auf jedes Element in einem Array anzuwenden und Elemente herauszufiltern, die den Kriterien erfüllen. Das Element, das in der Rückruffunktion wahr zurückgibt, wird beibehalten.
Die grundlegende Verwendung ist wie folgt:
$filtered = array_filter($array, function($value) {
return $value > 10;
});
Angenommen, wir definieren einige Konstanten, die mit App_ im Code beginnen, um die Anwendungskonfiguration zu identifizieren:
define('APP_NAME', 'MyApp');
define('APP_ENV', 'production');
define('APP_DEBUG', true);
define('VERSION', '1.0.0');
Wir möchten alle Konstanten herausfiltern, beginnend mit app_ . Sie können get_defined_constants () und array_filter () kombinieren, um wie folgt zu implementieren:
$allConstants = get_defined_constants(true);
$userConstants = $allConstants['user'] ?? [];
$appConstants = array_filter($userConstants, function($key) {
return strpos($key, 'APP_') === 0;
}, ARRAY_FILTER_USE_KEY);
print_r($appConstants);
Ausgangsergebnis:
Array
(
[APP_NAME] => MyApp
[APP_ENV] => production
[APP_DEBUG] => 1
)
Auf diese Weise extrahieren wir alle benutzerdefinierten Konstanten genau, um mit app_ zu beginnen, um eine bequeme nachfolgende Verarbeitung zu erhalten, wie z. B. Konfigurationsexport, Debuggen und Drucken usw.
Wir können die gefilterten Konstanten auch in JSON umwandeln und an eine Remote -Schnittstelle (z. B. ein Protokollsystem oder ein Konfigurationszentrum) einreichen. Senden Sie beispielsweise an https://m66.net/api/report_constants :
Verwandte Tags:
array_filter