2016-11-19 2 views
0

Я читал соглашения PHP в ООП и сталкивался с оператором/символом |, на который я не могу найти информацию. После тестирования проб и ошибок в среде я обнаружил, что если параметр не является типом данных, то выводится переменная справа от параметра.Что такое | делать в параметрах метода?

Например, давайте использовать класс вроде этого:

class MyClass { 
    const FROM_DB = 1; 
    const PUBLIC_ONLY = 0; 

    public static function getSomething($input, $db = 0, $public = 1) { 
     return $input; 
    } 
} 

Этот вариант использования будет возвращать 1:

echo MyClass::getSomething('test' | MyClass::FROM_DB | MyClass::PUBLIC_ONLY); 

Этот вариант использования вернется 7:

echo MyClass::getSomething(6 | MyClass::FROM_DB | MyClass::PUBLIC_ONLY); 

Наконец, этот прецедент вернет «тест»:

echo MyClass::getSomething('test' , MyClass::FROM_DB | MyClass::PUBLIC_ONLY); 

Я не понимаю, что делает | в этом вопросе? I found it here. Может ли кто-нибудь объяснить, что это называется и как оно используется правильно?

Спасибо заранее, see it working here.

+1

Это 'bitwise' оператор, поиск по этому вопросу. '1, 2, 4, 8, 16' и т. Д. Устанавливают бит в двоичном формате 1, с которым вы можете сравнивать. '1 | 2' dont match, но' 1 | 3' делать как '2 + 1' make 3, что означает, что бит в integer 3 также установлен в 1. Очень полезно для флагов – Xorifelse

+0

Смущает я, я полагаю, что он используется для математики? @Xorifelse – KDOT

+0

Совсем нет, просто вы можете сэкономить до 32 булевых чисел в 1 32-битном целом. Этот метод экономит много памяти в базе данных и позволяет использовать awesome 1 liners вместо вложенных, если elses и очень быстро. – Xorifelse

ответ

Смежные вопросы