Sergey89 нет, пользуюсь из экономических соображений локальной версией. Очень редко захожу на php.net
Всё-бы хорошо, да вот только он не полный. Та же mysqli содержит только малую часть функций в мануале, нету ни query, ни других прочих. короче что-то там съехало ИМХО.
Kreker -> Используется для доступа к полям и методам объекта :: - для доступа к полям, методам, константам класса Вообще, на сколько понимаю, класс в php представляет вырожденный объект (прошу сильно камнями не кидать)
Горбунов Олег а как определяется статический класс? Если в нем есть статические методы или поля?.. Не уверен что в ядре php существует разделение на статические и не статические классы, т.к. одна сущность. PS> С отключенными E_STRICT есть ведь возможность обратится почти к любому методу статически? PSS> а это меня до сих пор медленно убивает
Никак. Статический класс, это что-то типа неймспейса. Все методы должны быть объявлены статическими. p.s. есть конечно и варианты использование статический методов не только в организации неймспейсов. Например при реализации паттерна синглетон, для создания глобальной точки доступа к объекту.
я конкретно это и имел ввиду, ведь по сути Singletoon это фабрика, создающая объекты в единственном экземпляре. Статический метод instance() это всего лишь один из способов получения нужных нам объектов. Представляю себе сам Singletoon, как объект в единственном экземпляре, несмотря на то, что нигде в коде он не инстанируется. Значит этот процесс происходит в ядре php. Вообщем вот это я и имел ввиду. ( topas чудом увернулся от очередного камня )
В ядре чего? Синглетон сам себя инстанцирует при первом вызове. Огромным плюсом является его "глобальность". Мы может получить ссылку на объект в любом месте. Только вот "синглетонить" все классы не есть гуд.
Sergey89 Давайте не будем спорить, мои познания не очень глубоки чтобы поддерживать разговор в таком темпе. Предлагаю просто определится с понятиями: pattern 'Singletoon' - это фабричный паттерн. В этом вопросе мнения совпадают?
topas, не фабричный, а порождающий. К порождающим паттернам относятся Singleton, Factory Method, Abstract Factory, Prototype и Builder.
dAllonE Согласен. всем Если теперь рассмотреть реализацию, допустим на php, класс Singletoon имеет статический объект в единственном экземпляре, который Singletoon собирается порождать. Но это не единственная ведь реализация. Мы, к примеру, можем создать в глобальной области видимости объект класса Singletoon, проследим в конструкторе чтобы этот объект был единственным экземпляром и порождать с помощью этого объекта классы-одиночки, как в первом случае. Только теперь у нас будет не класс порождать объекты, а объект порождать объекты. У этого порождающего объекта скорее всего будут поля (уже не статические), где мы будем хранить порождаемые объекты. Основное отличие этих реализаций: в первом случае мы не занимаемся инстанированием порождающего паттерна Singletoon, во втором случае - сами создаем экземпляр паттерна и следим за его инстанированием. Вот поэтому я и говорю: что класс со статическими полями и методами очень сильно напоминает объект в единственном экземпляре без статических полей и методов. у меня очень сильное подозрение, что при работе со статическими классами php рассматривает такие классы, как объекты, мне кажется это абсолютно логичным: кто-ть может мне сказать где хранятся статическое поля