powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: Вызов static метода из метода объекта. Баг или фича?
16 сообщений из 66, страница 3 из 3
PHP: Вызов static метода из метода объекта. Баг или фича?
    #38286135
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apapacy,

а зачем? Если тут никто так и не понял, что и как делает этот код... и "потроллить" оказалось важнее чем помочь. Спросите "Скарю" - он же точно знает... :)

По-поводу "велосипеда": то что делается - ближе всего к Yii "наоборот". Фреймворк с минимальной ООП схемой (только там, где никак), и соответственно для особо высоких нагрузок (без различной "универсальной дури для идиотов").
...
Рейтинг: 0 / 0
PHP: Вызов static метода из метода объекта. Баг или фича?
    #38286140
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109а зачем? Если тут никто так и не понял, что и как делает этот код...
мы то поняли, ждали когда дойдет до автора, но видно несудьба)

хотя судя по сообщениям, автор кода, сам слабо понимает что там происходит. следует вопрос - зачем писать и использовать ООП и статику если в этом неразбираешься и там где это нах.. ненужно и можно сделать намного проще и без этого?
а вместо того чтобы разобраться и точно решить проблему, они ("внесли изменения" - значит сам неосилил) и теперь остается "молится" )) чтоб скрипт опять не "упал"... очень профессиональный подход, молитесь дальше
...
Рейтинг: 0 / 0
PHP: Вызов static метода из метода объекта. Баг или фича?
    #38286280
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r u,

Да, пасибки. Делайте "как надо", а у меня и так всё работает. Тему можно закрывать.
...
Рейтинг: 0 / 0
PHP: Вызов static метода из метода объекта. Баг или фича?
    #38287633
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ваще. Задали вапрос - Вам немного разобрали код Ваш - я например. Открыл Вам великое открытие за static::
А теперь илите все на бан? У меня все хорошо.
Это мне напоминает недавно решил немного изучить Harbour (типа xBase). Проект не очень популяпен и прмеров мало. Пошарился по форумам и три мужика задают вопрос с примером говнокода на три экрана. И в каждую строчку внесли по умышленной ошибке.
Блин ну ваще спрашивают вапрос а я еще должен был 10 минут исправлять их обфускацию кода типа
Код: sql
1.
2.
if a b == 
endi



Нехорошо-с. Некрасиво-с.
...
Рейтинг: 0 / 0
PHP: Вызов static метода из метода объекта. Баг или фича?
    #38287717
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apapacy,

Возможно. Но единственный кто тут пытался реально помочь - это "программер". То что вы писали, к делу не относилось (перечитайте и мои ответы тоже). А так, скажите спасибо Скаре.
Больше, у меня нет никакого желания делится чем-то с таким сообществом. Программёр, пока ещё до проблем PHP такого уровня - ещё не вырос... незачем.

Проблема протестирована и решена. По коду ещё раз: нет там никакого позднего связывания, впрочем как и "фатальных" ошибок. Так (или почти так) писать - вполне можно и даже на 5.2... как раз чёткое понимание того что писано и как (в отличии от "тут" и "как надо") позволяет свободно пользовать такие решения, в т.ч. и для ускорения и улучшения кода.

Этот ещё (недо-)фреймворк (через Zend_Db_Adpater!) в профилировании показывает примерно в 10 раз большую скорость чем предыдущие решения на Zend или Yii с меньшим потреблением памяти... примерно раз 20. Как раз потому, что в нём применяется РАНЕЕ и по большей части статическое связывание, а не позднее и объектно-динамическое.

... так что, когда разберётесь - пишите. И, в другой раз, когда народ просит помощи (надеюсь не придется) - относитесь уважительнее.
...
Рейтинг: 0 / 0
PHP: Вызов static метода из метода объекта. Баг или фича?
    #38287732
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109относитесь уважительнее.
заметь, тебе задавали наводящие вопросы и пытались повернуть в правильном направлении, вежливо. но ты каждый раз твердил одно и тоже, что мы непонимаем свой код, что советуем совсем не то и вообще недоросли похоже до понимания такого сложного кода...

ты сам себе противоречишь. пишешь о статическом связывании, в коде при этом у тебя фигурирует СОЗДАНИЕ объектов в методах которых идет обращение к статике... ЗАЧЕМ?

-ты же сам тут пишешь что статика рулит - ну так и пиши вообще без ООП или хотябы без инстанцирования объектов, получишь еще большую производительность(исходя из твоих слов).

-либо если уж создал объект, так и работай с ним как с объектом. статические методы тут каким боком?

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

качество кода тоже под вопросом, хоть и не критично, но уровень автора показывает(лови критику):

-класс Base у тебя нигде не создается, работа ведется только с его потомками, да и вообще по логике, его создание не имеет смысла - следовательно - делай его абстрактным!

-не у всех методов указаны модификаторы доступа, getSql вызывается внутри getData, тогда должен быть protected

- читаем твой комментарий к getData() - "получаем строку запроса тем способом, который определен в дочернем(!) классе":
а решение то очень простое $this->getSql(); никакой статики тут ненужно. чистый полиморфизм. наследник имеет свою реализацию метода, и объект ИМЕННО этот метод и будет использовать. это как раз придумали чтобы не заниматься "ананизмом" - получать ИМЯ текущего объекта и вызывать его метод через жопустатику. да так тоже можно, но это не значит что так нужно в данном случае.

-хочется высокой производительности? нах тогда тут ОРМ, хоть и простейший. в данном контексте он нифига не даст. странно в общем. проще тогда уж строчить запросы чистые. хоть экономия будет на сборке-парсинге-разборке запросов.

- про бессмысленную и постоянную передачу в методы new Select, я уже писал. для того чтоб передать готовый и модифицировать его, но ты этим не пользуешься, везде передается new Select, т.е. пустой. а раз так, можно вообще убрать это из параметров. и рожать Select при необходимости в самом методе.

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

удалось код подлатать - молодец, хотя почемуто скрываешь что именно было сделано.. может как раз то что советовали?)) вообще в "интернетах" принято так, решил проблему - отпишись как именно. комуто позже это поможет в аналогичной ситуации.
...
Рейтинг: 0 / 0
PHP: Вызов static метода из метода объекта. Баг или фича?
    #38288212
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r u,

:) Как тут любит писать Скаря: "ты сделал мой четверг"... разберёшься - пиши ещё.

Дабы не уподобляться цитируемому автору, отвечу по сабжу :) :

1. Класс Base - и так абстракный, мне нужно было показать пример... "чистота кода", писанного второпях и по памяти - повеселили. Там даже программер чистые ошибки нашел... :)

2. ...так и пиши... да вот "так и пишу"... "чукча не читатель", поскольку уже было сказано "Yii наоборот". В его рекламе как раз писано: все исключительно на ООП... даже специально для нечитателей дополнял: "ООП используется ТОЛЬКО там где без него никак"... повеселили. :)

3. конечно можно решить разными способами с разным результатом... тоже писал, что как и зачем решается. :)

4. решение то, которое приведено. Прямо указать квалификатор класса - нельзя, объект $this - непонятно какого класса... вызывать статику через -> ... можно конечно, но не нужно вводить интерпретатор и остальных читателей в ступор, когда есть нормальные и явные способы... а "нужно" именно так как написано... так и не поняли нифига. :)

5. не только "хочется" но и "можется", и даже "имеется". А ещё хочется не строчить прямые запросы.. и даже получается... (а вы продолжайте заниматься ананизмом с прямыми запросами и объектными ОРМ) :)

6. просветление про "бессмысленную передачу new Select", думаю наступит ох как нескоро... :)

7. Да, соглашусь... вроде всё мелочи, и даже Прогаммер в трех классах смог разобраться, хотя честно писал о себе (думаю просто скромно - нормальный программер похоже)... а выливается всё в полное непонимание примера и его неприятие (от непонимания видимо)...

8. Да. удалось разобраться и код подлатать и PHP вкупе с ним (отписал кому надо)... :)
...
Рейтинг: 0 / 0
PHP: Вызов static метода из метода объекта. Баг или фича?
    #38288238
phpz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если не уважаете собеседника, то уважайте хотя бы русский язык. Например, всеми любимое слово ананизм пишется через О
...
Рейтинг: 0 / 0
PHP: Вызов static метода из метода объекта. Баг или фича?
    #38288248
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
phpz,

орфография автора - сохранена. :)

уважать можно тех, кто уважает других.
...
Рейтинг: 0 / 0
PHP: Вызов static метода из метода объекта. Баг или фича?
    #38288318
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109,

писец. замкнутый круг.
ему об одном он о другом.
отписки из паралельной вселенной. особенно
Arhat109объект $this - непонятно какого класса.далее даже говорить неочем.
...
Рейтинг: 0 / 0
PHP: Вызов static метода из метода объекта. Баг или фича?
    #38288372
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109,

А ошибка хоть на каком уровне была? Неверный код. Настройки сервера (как изначально считалось)? Исправили участок из предоставленного кода или где-то в другом месте было не то?

Интересно же всё-таки. Тем более, раз я до таких проблем не дорос ещё, так хоть объясните. :) Я же тут не просто сижу стараясь 5 копеек. Тоже ведь вырасти стараюсь профессионально (как и многие).

P.S. Не по теме, но зря обижаетесь. Скарю игнорируем (странно что модераторы ещё не забанили, но это их личное дело), а остальные помочь хотят, каждый по своему. Мне ведь тоже слова "даже Програмёр" должны быть обидны, но форум - это не место для обид, а вот какраз для разумных советов и критики.
...
Рейтинг: 0 / 0
PHP: Вызов static метода из метода объекта. Баг или фича?
    #38288616
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр, да собственно, ничего что могло бы сказаться на типовой работе. e-accelerator у PHP глючит на хороших нагрузках и таком коде. Отрубили, да разрабам отписался. В результате ещё и выиграли по памяти в 2 раза на thread apache, и по скорости процентов 10 тоже. Потеряли только на загрузке главной. Теперь вместо 91мсек, отдается за 182мсек.

Происходит примерно следующее: в getData() идёт косвенный(!) вызов статического метода класса. А сам класс может и не нужен вовсе... объекты не создаются, методы не вызываются (Zend Auto Loader класс не грузит)... вот сильно похоже (и воспроизводилось), что e-accelerator при нехватке места вытесняет класс из кеша, а потом не знает куды ему обращаться... и лезет в пустоту с соответствующим результатом.

В моем понимании как-то так. Отрубил нафиг - всё прошло и стало даже чуть быстрее.
...
Рейтинг: 0 / 0
PHP: Вызов static метода из метода объекта. Баг или фича?
    #38288631
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОтрубил нафиг - всё прошло и стало даже чуть быстрее.
жжошь!
Модератор: Скаря , хватит уже. Либо по делу пишите, либо воздержитесь от флуда. Либо бан на следующем подобного рода высказывании. Выбирайте.
--
vkle
...
Рейтинг: 0 / 0
PHP: Вызов static метода из метода объекта. Баг или фича?
    #38288789
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrow,

для начинающих, общие положения: кешатор хорош только И только тогда, когда кешируемая величина требуется более ОПРЕДЕЛЕННОГО количества раз. В противном случае - это только ДОПОЛНИТЕЛЬНЫЕ расходы. Особенно по занимаемому месту.
...
Рейтинг: 0 / 0
PHP: Вызов static метода из метода объекта. Баг или фича?
    #38289004
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apapacyВозникают такие мысли
1) Зачем статические методы если вызываются из экземпляря всегда. Заменить на методы экземпляра
Вызов метода из строки решение явно нерациональное. Предполагаю что engine может пытаться закешировать их и переполняется .
2) Собственно query - не получается ли где-то супербольшой выборки.
3) Ну и реккурсия...

авторчто e-accelerator при нехватке места вытесняет класс из кеша , а потом не знает куды ему обращаться... и лезет в пустоту с соответствующим результатом.


Ну и чем это отличается от решения Вашей проблемы.
И за ststic:: Вы не знали
То есть не я не помог Вым решить проблему, а Вы не смогли прочитать что я Вам написал.
За акселератор Вы ничего не писали, но я преддполагал что-то в Этом роде. (Думал что-тотипа Зенд кэша работает)
...
Рейтинг: 0 / 0
PHP: Вызов static метода из метода объекта. Баг или фича?
    #38289426
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apapacy,

ну, положим что "чукча не читатель" не только к вам относится... не заметил тогда. :)

... на тот момент я тоже считал, что у нас Zend_Cache вовсю пашет (всего объема корпоративного кода - я не знаю до сих пор, его около 30Гб)... а оказалось его ещё ДО меня отрубили. Про акселератор - даже не думалось, думалось (по убыванию) на: косяк в коде (проблема вылезла сразу после сырого АПа), memcache, php, apache, nginx... тем более, что описание такого поведения - не нашел.
...
Рейтинг: 0 / 0
16 сообщений из 66, страница 3 из 3
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: Вызов static метода из метода объекта. Баг или фича?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]