2011-10-24 22 views
5

Czy można zdefiniować argument funkcji jako wiele możliwych typów? Na przykład funkcja może mieć ciąg znaków lub liczbę całkowitą, aby coś osiągnąć. Czy można w jakiś sposób to zdefiniować?Definiowanie wielu typów argumentów funkcji w PHP

Czy jest obsługiwany tylko jeden typ na argument?

(Pamiętaj, wiem, że mogę filtrować wejście później, ja po prostu lubię mieć moje argumenty wpisane)

Odpowiedz

2

Najlepsze co możesz zrobić, to o nazwie Type Hinting jest wyjaśnione tutaj:

http://php.net/manual/en/language.oop5.typehinting.php

W szczególności można wskazać typ klasy lub typ tablicy, ale (zgodnie z instrukcją) "Podpowiedź tradycyjna z int i string nie jest obsługiwana." Sądzę więc, że to, co próbujesz osiągnąć, nie jest możliwe na tym poziomie.

Można jednak tworzyć własne opakowania itp. Prawdopodobnie istnieje tysiąc sposobów na poradzenie sobie z tym.

+1

Cheers, w końcu wiem, że to się nazywa teraz typów parametrów. – Swader

+1

Nazywa się Hinting w PHP (tylko?), Ponieważ w rzeczywistości jest to tylko wskazówka dla interpretera PHP, który w ten sposób jest poinstruowany, aby "sztucznie" sprawdzić typ argumentu i wygenerować błąd, jeśli nie pasuje do podpowiedzi. W językach statycznie pisanych jest to podstawowa i wymagana rzecz, część składni funkcji, i nie jest tak nazywane ... w rzeczywistości nie sądzę, że ma inną nazwę w przeciwnym razie ... – Palantir

+0

To bardzo dobrze Wiesz, dzięki! – Swader

0

PHP jest dynamicznie wpisane - ale rodzaj podpowiedzi został dodany do języka - więc jeśli nie wcześniej zasugerował parametr można przekazać dowolny typ chcesz:

function something($token) 
{ 
    if (is_numeric($token)) { 
    // its a float, double, integer 

    } else { 
    // its a string, array, object 
    } 
} 

(OFF czubek głowy Nie jestem pewien, jak obsługiwane są zasoby).

Jednak jeśli chcesz programować w silnie typami języka, a następnie (IMHO) należy używać coś innego niż PHP

+0

'is_numeric' zawiera również ciągi liczbowe, ale nie zasoby. – deceze

+0

Dzięki, po prostu staramy się zoptymalizować go dla HipHop. – Swader

Powiązane problemy