LINUX.ORG.RU

История изменений

Исправление micronekodesu, (текущая версия) :

Спасибо! Но на мой взгляд тут особо нет разницы, все равно не компилятор как-то там магически определяет о какой переменной идет речь, а это надо явно указать, просто тут этот объект не надо передавать явно.

В питоне есть еще методы класса, куда передается не инстанс, а сам класс, есть статикметоды, в которых ни класс, ни инстанс не передаются, можешь показать как это работает в php?

class Foo:

    foo = 10

    @classmethod
    def bar(cls, value):
        cls.foo = value


foo1 = Foo()
foo2 = Foo()

print(f"{foo1.foo=}, {foo2.foo=}")

foo1.bar(20)

print(f"{foo1.foo=}, {foo2.foo=}")

Результат

foo1.foo=10, foo2.foo=10
foo1.foo=20, foo2.foo=20

Для этого в php тоже есть какой-то «неявный» вариант?

Исходная версия micronekodesu, :

Спасибо! Но на мой взгляд тут особо нет разницы, все равно не компилятор как-то там магически определяет о какой переменной идет речь, а это надо явно указать, просто тут этот объект не надо передавать явно.

В питоне есть еще методы класса, куда передается не инстанс, а сам класс, есть статикметоды, в которых ни класс, ни инстанс не передаются, можешь показать как это работает в php?

class Foo:

    foo = 10

    @classmethod
    def bar(cls, value):
        cls.foo = 20


foo1 = Foo()
foo2 = Foo()

print(f"{foo1.foo=}, {foo2.foo=}")

foo1.bar(20)

print(f"{foo1.foo=}, {foo2.foo=}")

Результат

foo1.foo=10, foo2.foo=10
foo1.foo=20, foo2.foo=20

Для этого в php тоже есть какой-то «неявный» вариант?