Подтвердить что ты не робот

Разница между "публичной" и "публичной статикой"?

Что означает static?

Я знаю, что public означает, что к нему можно получить доступ извне класса, а private только изнутри класса…

4b9b3361

Ответ 1

Static означает, что к нему можно получить доступ без создания экземпляра класса. Это полезно для констант.

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

Ответ 2

public: к публично объявленным элементам можно получить доступ везде.

Защищенный: защищенный ограничивает доступ к наследуемому и родительскому классы (и класс, который определяет элемент).

private: Private ограничивает видимость только классом, который определяет предмет.

static: статическая переменная существует только в локальной области функций, но он не теряет своего значения, когда выполнение программы выходит из этой области.

final: ключевые слова final не позволяют дочерним классам переопределять метод с префиксом определения с окончательным. Если сам класс будучи определенным как окончательный, он не может быть расширен.


Помимо PHP:

transient: временная переменная - это переменная, которая не может быть сериализованным.

volatile: переменная, которая может быть одновременно изменена несколькими потоки должны быть объявлены как volatile. Переменные, объявленные как volatile не будет оптимизирован компилятором, потому что их значение может измениться в в любой момент.

Ответ 3

С http://php.net/manual/en/language.oop5.static.php

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

Ответ 4

Пример: при использовании ключевого слова static мы не можем использовать $this

class Foo {
    private $foo='private';

    private function priv_func() {
        echo 'priv_method';
    }

    public static function get() {
        echo $this->foo;
        $this->priv_func();
    }
}

$obj = new Foo();
$obj->get();

Неустранимая ошибка: использование $ this, когда не в контексте объекта в (…)