пятница, 31 марта 2017 г.

PHP ООП. Работа с модификатором static

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

Student::$total_students
Student::welcome_students()
self::$total_students++

Статичные методы должны идти вместе и вызывать статичные вещи. Не смешивайте статичные и нестатичные методы.



<?php
// Статичные переменные и методы используют, когда у нас нет экземпляра. Например, общее кол-во студентов.
// Или это очень простая информация о классе: новички, второкурсники и старшие курсы.


// Со статичными методами нельзя использовать $this
class Student {
static $total_students = 0;

// Обычно мы пишем так:
public function add_students() {
$this->total_students++;
}


// со статичными методами пишем так:
static public function add_student() {
self::$total_students++;
}

static function welcome_students($var="Hello") {
echo "{$var} students.";
}

}

// У нас есть доступ к $total_students и welcome_students даже, если у нас нет экземпляра.
/*
Обычно пишем:
$student = new Student();
echo $student->total_students;
Но не со статичными переменными:
*/
echo Student::$total_students . "<br />";
echo Student::welcome_students() . "<br />";


// Статичные переменные разделяются в дереве наследования.
// Это запутывает.
class One {
static $foo;
}

class Two extends One {}
class Three extends One{}

One::$foo = 1;
Two::$foo = 2;
Three::$foo = 3;

echo One::$foo; // 3
echo Two::$foo; // 3
echo Three::$foo; // 3
?>

Комментариев нет:

Отправить комментарий

Materialize-css. Футер

Сделаем футер и прижмем к низу страницы. Документация: https://materializecss.com/footer.html