Czy w tej bibliotece w danym namespace używasz nazw funkcji które są takie same jak te wbudowane w PHP?
Czy masz może jakieś inne wyjaśnienie po co te brzydkie slashe?
Nic to nie ma wspólnego z pytanie z tematu.
Ale jeśli koniecznie chcesz zaspokoić swoją ciekawość, to calle z jawnym namespacem (czyli albo \strLen()
, albo zaimportowane use function strLen;
) wołają funkcję bezpośrednio, a kiedy używa się funkcji bez tego slasha, to wtedy to jest niejawne: funkcja może być albo w aktualnym namespace'ie albo w globalnym, i PHP każdorazowo robi checka. Różnica w performance jest widoczna w profilerze.
Poza tym jakoś dziwne mi wygląda używanie self:: w prywatnej metodzie.
Jeśli self::$candidates
nie jest statyczne, to raczej powinno być tam $this->candidates
. Z kolei skoro $candidates może być statyczna, to czemu metoda jest prywatna i non-static?
Znowu to nie ma nic wspólnego z pytaniem.
Pole $candidates
jest statyczne, bo jest stałe i nie potrzebuję tworzyć instancji array'a osobnego dla każdego instancji obiektu. Metoda nie jest statyczna bo nie ma powodu żeby była statyczna, nie możnaby jej wtedy użyć do polimorfizmu, interfejsu, nic. Nie mam nigdzie w kodzie funkcji statycznych.
W opcji drugiej - zwracasz też current($availableDelimiters), czy to oznacza że może tam być więcej elementów w tym arrayu? Bo w opcji pierwszej jawnie zwracasz pierwszy napotkany element.
a return \current()
to niby nie jest jawnie zwrócony pierwszy element?
Czy w obu wersjach będzie to ten sam element?
No weź się zastanów, i sam sobie odpowiesz. Tak, w obu wersjach będzie ten sam wynik.