Hallo Jörg,
es ist schon länger eine Warning, und wer Warnungen ignoriert, rennt irgendwann vor die Wand. Weil es jetzt ein fatal error ist, kann man es auch nicht mit einem Error-Handler abfangen.
Dass der Sanierungsbedarf tatsächlich anderswo besteht, weißt Du aber, ja? Du prüfst mit count, ob Du Ergebnisse hast. Ein Array hast Du durch deine Hilfsfunktion immer noch nicht, d.h. du musst an der Stelle ohnehin den Code überspringen, der das Array verarbeiten will.
Ich würde wetten, dass Du an all den Stellen, wo es crasht, eine Abfrage
if (count($array) > 0)
hast.
Also solltest Du an diesen Stellen generell die Abfrage klarer formulieren.
if (count($dubiousArray) > 0)
{
// process dubious array
}
if (is_array($dubiousArray) && count($dubiousArray) > 0)
{
// process dubious array
}
Natürlich kann man diese Bedingung noch in eine Funktion kapseln. Diese sollte dann aber so ähnlich wie "is_data_in_array" oder "array_has_data" heißen. Das führt zu Code, der sich wie ein Satz liest:
if (is_data_in_array($dubiousArray))
{
// process dubious array
}
if (array_has_data($dubiousArray))
{
// process dubious array
}
Das ist allerdings nicht zwingend nötig. Denn oft genug hat man an solchen Stellen eine foreach-Schleife, die bei einem leeren $dubiousArray ohnehin nichts tut. Das muss man sich natürlich Stelle für Stelle angucken.
Die Funktion selbst würde ich dann genauso schreiben:
function is_data_in_array($dubiousArray) : int
{
return is_array($dubiousArray) && count($dubiousArray) > 0;
}
Eine generische Count-Kapsel würde ich zu vermeiden suchen.
Rolf
sumpsi - posui - obstruxi