Публичные функции и функции в CodeIgniter
В PHP, в чем разница между объявлением методов внутри класса, например
public function
VS function
Например:
public function contact()
{
$data['header'] = "Contact";
$this->load->view('admin/admin_contact', $data);
}
VS
function contact()
{
$data['header'] = "Contact";
$this->load->view('admin/admin_contact', $data);
}
Лучше ли использовать публичную функцию или функцию и почему?
Ответы
Ответ 1
Способы, объявленные с помощью любого явного ключевого слова видимости, являются наилучшей практикой. Он выглядит и чувствует себя лучше, и это не путает людей.
- В большинстве правил кодирования PHP5 (например, Zend, Symfony...) требуется общедоступное ключевое слово, поэтому оно знакомо.
- Это означает, что объявления переменных и методов используют один и тот же синтаксис.
- Это более явное и заставляет разработчиков учитывать их метод
видимость.
Ответ 2
Согласно PHP.net
Метод класса может быть определен как открытый, закрытый или защищенный. Методы, объявленные без какого-либо явного ключевого слова видимости, определяются как public.
для лучшей практики я предлагаю использовать ключевые слова видимости (esp при использовании более высоких версий PHP). он предотвращает путаницу (например, тот, в котором вы сейчас находитесь) и способствует стандартной практике кодирования.
Ответ 3
Нет никакой разницы между этими двумя.
Оба они одинаковы.
В кодеиндигните оба имеют одинаковый смысл
и может вызываться с использованием стандартных тегов URI, если вы не дадите '_' перед именем вашей функции
_fname()
не будет называться
Ответ 4
Это то же самое... Если вы не укажете, что методы/функции видимости объявляются как public
Способы, объявленные без какого-либо явного ключевого слова видимости, определяются как public
из docs here
Ответ 5
Если вам действительно нужна лучшая практика, вы всегда будете пользоваться общественностью. Но для codeigniter Framework это не означает, что вы объявите его публичным или нет. Обратите внимание: если вы хотите, чтобы контроллер был закрытым, вы не используете private, но вы будете использовать знак подчеркивания (_) перед именем вашего контроллера, чтобы он не был видимым.
Ответ 6
- Оба объявления одинаковы, и обе функции будут доступны по запросу URI в codeigniter
- Чтобы запретить вызов метода пользователем, используйте частные или защищенные спецификации доступа.