[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Создание объекта или статические свойства и методы
J1upuk
Собственно вопрос, опыта в ОО подходе очень мало, и немогу понять, в зависимости от чего принимать решение делать метод или свойство статическим? В каких случаях лучше создать объект и наоборот, когда лучше обращаться к статическому методу класса а не к методу объекта? От чего отталкиваться? Прошу не закидывать какашками)
Arh
Цитата
От чего отталкиваться?

Отталкивайся от нестатических методов =)

Цитата
свойство статическим

Свойство делается статическим как правило для того, что бы там что то сохранять (кэшировать) на протяжении всего скрипта и как правило его нельзя менять (private static $data).

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

Ну как то так, остальное шишки на лбу подскажут =)

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
AllesKlar
Статический метод нужен тогда, когда ты не работаешь с экземпляром класса, но реализация метода связанна с данным классом

Например, у тебя есть класс News
class News
{
public $id;
public $title;
public $text;

public function __construct($id = 0)
{
if ($id > 0) {
$row = $this->db->query('SELECT * FROM news WHERE id = ' . (int)$id);
if (! empty($row)) {
$this->id = $row['id'];
$this->title = $row['title'];
$this->text = $row['text'];
}
}
}


public function save()
{
$this->db->query('INSERT INTO news .....');
}

public static function getAll()
{
$news = array();
$rows = $this->db->query('SELECT id FROM news');
foreach ($rows as $row) {
$news[] = new News($row['id']);
}

return $news;
}

}



Можно создать пустой объект
$news = new News();



Можно создать объект, содержащий новость с id = 15
$news = new News(15);


А теперь нам нужны все новости.
Как быть? Ведь и тут и там новости, но объект может содержать только один экземпляр.
Делаем статический метод, который нам вернет массив объектов своего класса.
$news_all = News::getAll();


_____________
[продано копирайтерам]
Быстрый ответ:

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