[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с переменными и методами
abdula81
Парни, в чем отличие вот такого объявления переменных и их взаимодействия внутри класса? Интересует вопрос работы $users

class User
{
public function getAll(){
$users = array();
//db
foreach($result->fetchAll() as $row){
$users[$row['id']] = $row['name'];
}
return $users;
}

public function newMethod(){
$var = $this->getAll();
//...
}
}


class User
{
private $users = array();

public function getAll(){
//db
foreach($result->fetchAll() as $row){
$this->users['id'] = $row['name'];
}
}


public function newMethod(){
$var = $this->users;
//...
}
}
abdula81
По мне, так когда метод что-то возвращает return то как то логичней что-ли. Я про первый способ.
twin
Первый случай называется stateless. Это класс - контейнер для функций. Его объект не хранит состояние, так как нет свойств. Второй называется stateful, он хранит состояние (значение свойств).

За первый прожженые адепты ООП отрывают руки. smile.gif Шучу. На самом деле оба варианта приемлимы, нужно использовать по назначению. Как удобнее.

return кстати тут непричем, метод может что то возвращать и там, и там.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Invis1ble
Цитата (abdula81 @ 17.01.2018 - 16:39)
По мне, так когда метод что-то возвращает return то как то логичней что-ли. Я про первый способ.

Во-первых, название метода getAll() говорит о том, что метод должен что-то вернуть. Если метод с префиксом get ничего не возвращает, то нужно бить того, кто этот метод написал.
Во-вторых, во втором варианте если ты не вызовешь getAll() перед newMethod(), то вероятно напорешься на баг в виду незаполненного массива юзеров.
Про state уже twin выше упомянул.
Вообще, тут разбираться особо нечего, конкретных вопросов не задано, а код очень простой. В мануале всё есть.

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

abdula81
Спасибо за разъяснение, всё понял.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.