Будет ли метод в статическом классе и метод статического класса иметь одинаковую возможность вызова?

Я думаю, мой вопрос был бы

static class example1{
    function example1_function(){};     
}

а также

class example2{
    static function example2_function(){};
}

приводят к одному и тому же результату, то есть как example1->example1_function(), так и example2->example2_function() имеют одинаковую возможность вызова. Будут ли оба определены как статические и пригодные для использования как таковые?


person Brook Julias    schedule 06.05.2011    source источник
comment
static class и class class приведут к ошибкам синтаксического анализа.   -  person mario    schedule 07.05.2011


Ответы (3)


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

abstract class Something
{
}

Выполнение new Something вызовет ошибку о том, что вы не можете создать экземпляр класса, затем вы можете объявить свои статические методы следующим образом:

abstract class Something
{
    public static function Else()
    {
    }
}

Вам все равно придется объявлять свои методы как static, так оно и есть.

а затем вы можете использовать так:

Something::Else();

Надеюсь, это прояснит некоторые вещи

person RobertPitt    schedule 06.05.2011
comment
В отличие от function Else()? (не в классе) - person Explosion Pills; 07.05.2011
comment
Пожалуйста, объясните свой комментарий, он не может понять, о чем вы говорите? - person RobertPitt; 07.05.2011
comment
Зачем вам создавать класс всех статических методов, а не просто писать функции для методов? - person Explosion Pills; 07.05.2011
comment
Поскольку он действует как оболочка, не влияет на глобальную область действия, позволяет вам использовать форму ООП self::OtherMethod() - person RobertPitt; 07.05.2011

PHP не позволяет вам объявлять класс статическим.

Чтобы вызвать статический метод, вы должны использовать оператор ::.

person Explosion Pills    schedule 06.05.2011

Как уже упоминалось в комментариях, ключевое слово static не используется для классов таким образом (синтаксис).

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

person Thomas Langston    schedule 06.05.2011