Публичные функции против функций в 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);
}

Лучше ли использовать публичную функцию или функцию и почему?

6 23

6 ответов:

Методы, объявленные с любым ключевым словом явной видимости, являются наилучшей практикой. Это выглядит и чувствует себя лучше, и это не смущает людей.

  • большинство соглашений о кодировании PHP5 (например, Zend, Symfony...) требуется ключевое слово public, поэтому оно знакомо.
  • это означает, что объявления переменных и методов используют один и тот же синтаксис.
  • Он более явный и заставляет разработчиков рассмотреть свой метод видимость.

Согласно PHP.net

Методы класса

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

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

Между этими двумя понятиями нет никакой разницы. Оба такие же. В codeigniter оба имеют одинаковое значение и может быть вызван с помощью стандартных тегов URI, если вы не даете '_' перед именем функции _fname() не будет называться

Это одно и то же .... если вы не задаете видимость, то методы / функции объявляются как public

Методы, объявленные без явного ключевого слова visibility, определяются как public

Из документов здесь

Если вы действительно хотите лучшей практики, вы всегда будете использовать public. Но для фреймворка codeigniter не имеет значения, объявляете вы его публичным или нет. Обратите внимание, что если вы хотите, чтобы контроллер был приватным, вы не используете private, но вы будете использовать подчеркивание (_) перед вашим именем контроллера, чтобы оно не было видно.

  • оба объявления одинаковы, и обе функции будут доступны по запросу URI в codeigniter
  • для предотвращения вызова метода пользователем используйте частные или защищенные спецификаторы доступа.