2012-06-11 2 views
4

Я часто вижу код, определенный функцией без ключевых слов видимости. например:Определяет метод класса без видимости стенограммы «public»?

class Foo() { 
    function bar() { 
    // ... 
    } 
} 

Это стенограмма public функция? Это хорошая практика, чтобы опустить это?

class Foo() { 
    public function bar() { 
    //.. 
    } 
} 
+2

Да, это общедоступно, и imo это практика _bad_, чтобы опустить это. Функция автозаполнения в IDE может не распознавать функцию как общедоступную, если вы это сделаете (у NetBeans, в частности, есть проблемы). – halfer

+0

IMO, это совершенно необязательно. Единственный раз, когда вам нужно указать, следует ли вам следовать шаблону singleton, и вам нужно, чтобы он был закрытым. – afuzzyllama

+0

Я бы включил всегда 'public', потому что считаю, что фокус на удобочитаемости кода всегда является хорошей практикой. – Cranio

ответ

2

Как написано в PHP Doc,

Методы, объявленные без явного ключевого слова видимость определяются как общественности.

Так что, да, в

class Foo() { public function bar() { //.. } } 

Foo::bar() является открытым, но опуская видимость ключевого слова никогда не является хорошей практикой. Если это быстрый и уродливый сценарий, почему бы и нет, но в других случаях вы должны указать его.

5

Да, вы правы; когда вы опускаете модификатор видимости, это означает, что это public.

Это удержание PHP 4, которое не поддерживает операторов видимости. Эта функция включена для обратной совместимости.

Подробнее об этом можно узнать here.

+1

+1 За разъяснение, что это такое, чтобы каждый мог принимать собственные решения. – hakre

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