Я знаю, что перегрузка в PHP недоступна, и есть временное решение с func_get_args. Но мой вопрос: что я могу сделать, если хочу сделать статическую и нестационарную версию того же метода? Например, у меня есть класс Profiles_Model. Иногда может понадобиться только, чтобы получить все профили, но ничего больше, так что я не хочу, чтобы создать экземпляр объекта, вызывая статический метод будет достаточно, как:Перегрузка методов PHP
Profiles_Model :: getProfiles();
Но иногда может иметь экземпляра объекта из класса, и я использую другие методы, и я хотел бы, если не только класс, но сам объект был один и тот же метод, как:
$pmodel=new Profiles_Model();
$pmodel->getProfiles();
ли есть ли какие-то решения? Это то, что я хотел бы:
class Profiles_Model extends Model{
.
.
.
public function getProfiles(){
// do some stuff
}
public static function getProfiles(){
// do some stuff with the same results
}
}
Если результат будет действительно же, почему вы не вызывать статический метод с «Я» или «статический» ? –
Я бы избегал использования методов с тем же именем, которые содержат другое поведение. Может быть, смущает и, вероятно, нарушает единую ответственность. Я уверен, что экземпляр Profiles_Model, имеющий метод getProfiles(), вернет список содержащихся в нем элементов. вызов Profiles_Model :: getProfiles() предполагает, что класс знает что-то о том, как получить профили и, следовательно, ведет себя по-другому. – Hammerstein
Если они производят тот же результат - зачем их дублировать? Кроме того, я рекомендую вам использовать методы из объектов (нестатические), так как они в два раза быстрее (как я помню). – Kleskowy