Функции класса PHP, которые не являются ни методами, ни статическими - PullRequest
4 голосов
/ 02 августа 2011

Я хочу, чтобы функция в моем классе выполняла простую задачу, например:

function hello($name) { return 'hello '.$name; }

т.е. Не обязательно статический (хотя я предполагаю, что это может быть), но не связанный с объектом (нет ссылки на $ this).

Использую ли я статическую функцию? то есть.

static function hello($name){return 'hello '.$name;}

и позвоните по номеру $string = ClassName::hello('Alex');

или есть лучший способ?

Спасибо!

Ответы [ 4 ]

2 голосов
/ 02 августа 2011

Статическая функция должна быть статической.
Если она не имеет состояния, тогда используйте статическую.

Вы также можете инкапсулировать группу похожих функций в классе * Utils.поэтому эти функции будут похожи на хелперы

class StringUtils{
function splitBy($delimeter,$val){....}
}

than you call it StringUtils::splitBy(..)

, то есть, если они не связаны с объектом, отделите его.

Вы можете взять с собой папку utils для каждого проекта и повторно использовать ееи так далее ....

2 голосов
/ 02 августа 2011

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

Статические методы не имеют $ this и должны вызываться как ClassName :: methodName ().

Статические методы могут обращаться к статическим переменным-членам своего класса.

1 голос
/ 02 августа 2011

Если нет ссылки на $ this (или возможную будущую ссылку на $ this), сделайте его статическим.

Я говорю это, потому что иногда я иду с:

static function hello( $name ) { return 'hello '.$name; }

и послеПосле нескольких месяцев разработки и расширения программы я чувствую необходимость сослаться на это, например:

function hello( $name ) { return $this->helloInLanguage[ $this->language ].' '.$name; };
1 голос
/ 02 августа 2011
  1. зачем эта функция в этом классе?если он не принадлежит ему - просто переместитесь куда-нибудь еще
  2. ... если принадлежит, то вопрос в возможности вызвать его без создания объекта
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...