Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
PHP: Вызов static метода из метода объекта. Баг или фича?
|
|||
|---|---|---|---|
|
#18+
apapacy, а зачем? Если тут никто так и не понял, что и как делает этот код... и "потроллить" оказалось важнее чем помочь. Спросите "Скарю" - он же точно знает... :) По-поводу "велосипеда": то что делается - ближе всего к Yii "наоборот". Фреймворк с минимальной ООП схемой (только там, где никак), и соответственно для особо высоких нагрузок (без различной "универсальной дури для идиотов"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 07:19 |
|
||
|
PHP: Вызов static метода из метода объекта. Баг или фича?
|
|||
|---|---|---|---|
|
#18+
Arhat109а зачем? Если тут никто так и не понял, что и как делает этот код... мы то поняли, ждали когда дойдет до автора, но видно несудьба) хотя судя по сообщениям, автор кода, сам слабо понимает что там происходит. следует вопрос - зачем писать и использовать ООП и статику если в этом неразбираешься и там где это нах.. ненужно и можно сделать намного проще и без этого? а вместо того чтобы разобраться и точно решить проблему, они ("внесли изменения" - значит сам неосилил) и теперь остается "молится" )) чтоб скрипт опять не "упал"... очень профессиональный подход, молитесь дальше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 07:38 |
|
||
|
PHP: Вызов static метода из метода объекта. Баг или фича?
|
|||
|---|---|---|---|
|
#18+
r u, Да, пасибки. Делайте "как надо", а у меня и так всё работает. Тему можно закрывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2013, 10:22 |
|
||
|
PHP: Вызов static метода из метода объекта. Баг или фича?
|
|||
|---|---|---|---|
|
#18+
Ну ваще. Задали вапрос - Вам немного разобрали код Ваш - я например. Открыл Вам великое открытие за static:: А теперь илите все на бан? У меня все хорошо. Это мне напоминает недавно решил немного изучить Harbour (типа xBase). Проект не очень популяпен и прмеров мало. Пошарился по форумам и три мужика задают вопрос с примером говнокода на три экрана. И в каждую строчку внесли по умышленной ошибке. Блин ну ваще спрашивают вапрос а я еще должен был 10 минут исправлять их обфускацию кода типа Код: sql 1. 2. Нехорошо-с. Некрасиво-с. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 00:10 |
|
||
|
PHP: Вызов static метода из метода объекта. Баг или фича?
|
|||
|---|---|---|---|
|
#18+
apapacy, Возможно. Но единственный кто тут пытался реально помочь - это "программер". То что вы писали, к делу не относилось (перечитайте и мои ответы тоже). А так, скажите спасибо Скаре. Больше, у меня нет никакого желания делится чем-то с таким сообществом. Программёр, пока ещё до проблем PHP такого уровня - ещё не вырос... незачем. Проблема протестирована и решена. По коду ещё раз: нет там никакого позднего связывания, впрочем как и "фатальных" ошибок. Так (или почти так) писать - вполне можно и даже на 5.2... как раз чёткое понимание того что писано и как (в отличии от "тут" и "как надо") позволяет свободно пользовать такие решения, в т.ч. и для ускорения и улучшения кода. Этот ещё (недо-)фреймворк (через Zend_Db_Adpater!) в профилировании показывает примерно в 10 раз большую скорость чем предыдущие решения на Zend или Yii с меньшим потреблением памяти... примерно раз 20. Как раз потому, что в нём применяется РАНЕЕ и по большей части статическое связывание, а не позднее и объектно-динамическое. ... так что, когда разберётесь - пишите. И, в другой раз, когда народ просит помощи (надеюсь не придется) - относитесь уважительнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 06:56 |
|
||
|
PHP: Вызов static метода из метода объекта. Баг или фича?
|
|||
|---|---|---|---|
|
#18+
Arhat109относитесь уважительнее. заметь, тебе задавали наводящие вопросы и пытались повернуть в правильном направлении, вежливо. но ты каждый раз твердил одно и тоже, что мы непонимаем свой код, что советуем совсем не то и вообще недоросли похоже до понимания такого сложного кода... ты сам себе противоречишь. пишешь о статическом связывании, в коде при этом у тебя фигурирует СОЗДАНИЕ объектов в методах которых идет обращение к статике... ЗАЧЕМ? -ты же сам тут пишешь что статика рулит - ну так и пиши вообще без ООП или хотябы без инстанцирования объектов, получишь еще большую производительность(исходя из твоих слов). -либо если уж создал объект, так и работай с ним как с объектом. статические методы тут каким боком? твою примитивную задачу можно решить и просто функциями, и статическим ООП и динамикой. что быстрее будет незнаю, зависит от реализации, но ты говоришь одно а делаешь другое. нелогично, как минимум. качество кода тоже под вопросом, хоть и не критично, но уровень автора показывает(лови критику): -класс Base у тебя нигде не создается, работа ведется только с его потомками, да и вообще по логике, его создание не имеет смысла - следовательно - делай его абстрактным! -не у всех методов указаны модификаторы доступа, getSql вызывается внутри getData, тогда должен быть protected - читаем твой комментарий к getData() - "получаем строку запроса тем способом, который определен в дочернем(!) классе": а решение то очень простое $this->getSql(); никакой статики тут ненужно. чистый полиморфизм. наследник имеет свою реализацию метода, и объект ИМЕННО этот метод и будет использовать. это как раз придумали чтобы не заниматься "ананизмом" - получать ИМЯ текущего объекта и вызывать его метод через жопустатику. да так тоже можно, но это не значит что так нужно в данном случае. -хочется высокой производительности? нах тогда тут ОРМ, хоть и простейший. в данном контексте он нифига не даст. странно в общем. проще тогда уж строчить запросы чистые. хоть экономия будет на сборке-парсинге-разборке запросов. - про бессмысленную и постоянную передачу в методы new Select, я уже писал. для того чтоб передать готовый и модифицировать его, но ты этим не пользуешься, везде передается new Select, т.е. пустой. а раз так, можно вообще убрать это из параметров. и рожать Select при необходимости в самом методе. и это всего в трех методах, трех классов. уверен что в остальном коде подобных вещей тоже хватает. вроде мелочи, а в итоге это накапливается и выливается в некорректную и непродуманную архитектуру, которая конечно ведет себя нестабильно. это(и многое другое) тебе и пытались сказать тут в топике. но ты отвергаешь все, твердя что твой код идеален, а то что он крешится - виноваты пятна на солнце и инопланетяне. удалось код подлатать - молодец, хотя почемуто скрываешь что именно было сделано.. может как раз то что советовали?)) вообще в "интернетах" принято так, решил проблему - отпишись как именно. комуто позже это поможет в аналогичной ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 08:04 |
|
||
|
PHP: Вызов static метода из метода объекта. Баг или фича?
|
|||
|---|---|---|---|
|
#18+
r u, :) Как тут любит писать Скаря: "ты сделал мой четверг"... разберёшься - пиши ещё. Дабы не уподобляться цитируемому автору, отвечу по сабжу :) : 1. Класс Base - и так абстракный, мне нужно было показать пример... "чистота кода", писанного второпях и по памяти - повеселили. Там даже программер чистые ошибки нашел... :) 2. ...так и пиши... да вот "так и пишу"... "чукча не читатель", поскольку уже было сказано "Yii наоборот". В его рекламе как раз писано: все исключительно на ООП... даже специально для нечитателей дополнял: "ООП используется ТОЛЬКО там где без него никак"... повеселили. :) 3. конечно можно решить разными способами с разным результатом... тоже писал, что как и зачем решается. :) 4. решение то, которое приведено. Прямо указать квалификатор класса - нельзя, объект $this - непонятно какого класса... вызывать статику через -> ... можно конечно, но не нужно вводить интерпретатор и остальных читателей в ступор, когда есть нормальные и явные способы... а "нужно" именно так как написано... так и не поняли нифига. :) 5. не только "хочется" но и "можется", и даже "имеется". А ещё хочется не строчить прямые запросы.. и даже получается... (а вы продолжайте заниматься ананизмом с прямыми запросами и объектными ОРМ) :) 6. просветление про "бессмысленную передачу new Select", думаю наступит ох как нескоро... :) 7. Да, соглашусь... вроде всё мелочи, и даже Прогаммер в трех классах смог разобраться, хотя честно писал о себе (думаю просто скромно - нормальный программер похоже)... а выливается всё в полное непонимание примера и его неприятие (от непонимания видимо)... 8. Да. удалось разобраться и код подлатать и PHP вкупе с ним (отписал кому надо)... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 13:11 |
|
||
|
PHP: Вызов static метода из метода объекта. Баг или фича?
|
|||
|---|---|---|---|
|
#18+
Если не уважаете собеседника, то уважайте хотя бы русский язык. Например, всеми любимое слово ананизм пишется через О ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 13:20 |
|
||
|
PHP: Вызов static метода из метода объекта. Баг или фича?
|
|||
|---|---|---|---|
|
#18+
phpz, орфография автора - сохранена. :) уважать можно тех, кто уважает других. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 13:22 |
|
||
|
PHP: Вызов static метода из метода объекта. Баг или фича?
|
|||
|---|---|---|---|
|
#18+
Arhat109, писец. замкнутый круг. ему об одном он о другом. отписки из паралельной вселенной. особенно Arhat109объект $this - непонятно какого класса.далее даже говорить неочем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 13:51 |
|
||
|
PHP: Вызов static метода из метода объекта. Баг или фича?
|
|||
|---|---|---|---|
|
#18+
Arhat109, А ошибка хоть на каком уровне была? Неверный код. Настройки сервера (как изначально считалось)? Исправили участок из предоставленного кода или где-то в другом месте было не то? Интересно же всё-таки. Тем более, раз я до таких проблем не дорос ещё, так хоть объясните. :) Я же тут не просто сижу стараясь 5 копеек. Тоже ведь вырасти стараюсь профессионально (как и многие). P.S. Не по теме, но зря обижаетесь. Скарю игнорируем (странно что модераторы ещё не забанили, но это их личное дело), а остальные помочь хотят, каждый по своему. Мне ведь тоже слова "даже Програмёр" должны быть обидны, но форум - это не место для обид, а вот какраз для разумных советов и критики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 14:17 |
|
||
|
PHP: Вызов static метода из метода объекта. Баг или фича?
|
|||
|---|---|---|---|
|
#18+
Програмёр, да собственно, ничего что могло бы сказаться на типовой работе. e-accelerator у PHP глючит на хороших нагрузках и таком коде. Отрубили, да разрабам отписался. В результате ещё и выиграли по памяти в 2 раза на thread apache, и по скорости процентов 10 тоже. Потеряли только на загрузке главной. Теперь вместо 91мсек, отдается за 182мсек. Происходит примерно следующее: в getData() идёт косвенный(!) вызов статического метода класса. А сам класс может и не нужен вовсе... объекты не создаются, методы не вызываются (Zend Auto Loader класс не грузит)... вот сильно похоже (и воспроизводилось), что e-accelerator при нехватке места вытесняет класс из кеша, а потом не знает куды ему обращаться... и лезет в пустоту с соответствующим результатом. В моем понимании как-то так. Отрубил нафиг - всё прошло и стало даже чуть быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 16:02 |
|
||
|
PHP: Вызов static метода из метода объекта. Баг или фича?
|
|||
|---|---|---|---|
|
#18+
авторОтрубил нафиг - всё прошло и стало даже чуть быстрее. жжошь! Модератор: Скаря , хватит уже. Либо по делу пишите, либо воздержитесь от флуда. Либо бан на следующем подобного рода высказывании. Выбирайте. -- vkle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 16:06 |
|
||
|
PHP: Вызов static метода из метода объекта. Баг или фича?
|
|||
|---|---|---|---|
|
#18+
ScareCrow, для начинающих, общие положения: кешатор хорош только И только тогда, когда кешируемая величина требуется более ОПРЕДЕЛЕННОГО количества раз. В противном случае - это только ДОПОЛНИТЕЛЬНЫЕ расходы. Особенно по занимаемому месту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 17:06 |
|
||
|
PHP: Вызов static метода из метода объекта. Баг или фича?
|
|||
|---|---|---|---|
|
#18+
apapacyВозникают такие мысли 1) Зачем статические методы если вызываются из экземпляря всегда. Заменить на методы экземпляра Вызов метода из строки решение явно нерациональное. Предполагаю что engine может пытаться закешировать их и переполняется . 2) Собственно query - не получается ли где-то супербольшой выборки. 3) Ну и реккурсия... авторчто e-accelerator при нехватке места вытесняет класс из кеша , а потом не знает куды ему обращаться... и лезет в пустоту с соответствующим результатом. Ну и чем это отличается от решения Вашей проблемы. И за ststic:: Вы не знали То есть не я не помог Вым решить проблему, а Вы не смогли прочитать что я Вам написал. За акселератор Вы ничего не писали, но я преддполагал что-то в Этом роде. (Думал что-тотипа Зенд кэша работает) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2013, 19:58 |
|
||
|
PHP: Вызов static метода из метода объекта. Баг или фича?
|
|||
|---|---|---|---|
|
#18+
apapacy, ну, положим что "чукча не читатель" не только к вам относится... не заметил тогда. :) ... на тот момент я тоже считал, что у нас Zend_Cache вовсю пашет (всего объема корпоративного кода - я не знаю до сих пор, его около 30Гб)... а оказалось его ещё ДО меня отрубили. Про акселератор - даже не думалось, думалось (по убыванию) на: косяк в коде (проблема вылезла сразу после сырого АПа), memcache, php, apache, nginx... тем более, что описание такого поведения - не нашел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2013, 08:29 |
|
||
|
|

start [/forum/topic.php?fid=23&gotonew=1&tid=1463734]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
24ms |
get topic data: |
7ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 328ms |

| 0 / 0 |
