to zależy dużo kontekstu i powodu chcesz funkcja być wywołana tylko raz.
Jeśli masz funkcję inicjowania czegoś lub uruchamiania czegoś, podejście jest w porządku. Inną rzeczą, którą możesz zrobić, jeśli coś zainicjujesz, jest sprawdzenie, czy to, co chcesz zainicjować, istnieje, czy nie.
function initSomething() {
if (isSomethingInit()) return;
// Init Something
}
Jeśli używasz tych funkcji jako wywołania zwrotnego, możesz użyć deklaracji lambda zamiast deklarowania funkcji. Zapewni to, że twoja funkcja będzie wywoływana tylko z określonych miejsc.
function somethingWithCallback($callback) {
$callback(5);
}
somethingWithCallback(function ($e) {echo $e;});
Cóż, na początek, to nawet nie zrobi tego, co chcesz, ponieważ '$ foo_called' nie istnieje w zakresie funkcji. Będziesz musiał zadeklarować ją jako zmienną globalną w funkcji tego podejścia do pracy. – Hammerite
@Hammerite: Zgadza się. Zmieniłem kod, aby rozwiązać problem z zasięgiem. –