Процедурный подход в PHP и ОО. Налицо несовместимость синтаксиса.

Духовность™

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

Когда нет аргументов выползают аргументы в стиле выше.
А работать будет одинаково быстро
Вы уже измеряли? Я измерял. Мой самопальный класс уступает ArrayObject совсем немного. Но тема не об этом как раз...

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

Fortop

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

Вы уже измеряли? Я измерял.
А что Вы собственно меряли? Скорость работы одинарных и двойных кавычек? Вам самому еще не смешно?

Тот же сквозь объектный Ruby - уступает PHP в скорости.
Поэтому придумайте аргументацию получше.
 

Духовность™

Продвинутый новичок
А что Вы собственно меряли? Скорость работы одинарных и двойных кавычек? Вам самому еще не смешно?
Господи, причем тут кавычки? Вы вообще с кем разговариваете? О каких кавычках речь?

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

Fortop

Новичок
изначальных требований, предъявленных мною к языку
Ваши требования из разряда я хочу, тем не менее языком покрываются. Но Вам это чем-то не нравится. Чем?
Или это просто каприз?

Вы передаете массив и ждете что PHP автоматически должен сделать кастинг? В честь чего? Ну да бог с ним - не нравится стандартное поведение - переопределите его. Это невозможно для Вас?

-~{}~ 16.02.10 02:21:

Господи, причем тут кавычки? Вы вообще с кем разговариваете? О каких кавычках речь?
При чем? Это ведь Ваши слова?
я посмотрю, насколько наследник будет быстро работать...
И это при том, что ArrayObject несколько уступает в скорости стандартным массивам. И не уступает обычным объектам.
Так о чем собственно идет речь, как не об очередных кавычках?

Ключевыми особенностями ООП является отнюдь не скорость.

Это уже придирки к частностям, не относящиеся к теме. Вот мне нравится писать в хомсайте, да.
Это не придирки. Это вполне конкретная причина того что у Вас возникает путаница в коде на пустом месте.

Вы выбрали откровенно неподходящий инструмент. Для халупки - вполне сойдет топор, но строить небоскребы с его помощью.... мягко говоря глупое занятие.
 

Духовность™

Продвинутый новичок
Ваши требования из разряда я хочу, тем не менее языком покрываются.
Где они покрываются? Перечитайте ещё раз пост. Что Вы прицепились к ArrayObject, там пол страницы речь о стандартных средствах языка.

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

ArrayObject несколько уступает в скорости стандартным массивам
ну сделайте замер с 10 000 итераций и посмотрите, как он "несколько уступает в скорости стандартным массивам".

Всё, я пошел спать до 11 утра. Утром приду, разнесу вас всех. Готовьтесь.
 

Fortop

Новичок
пол страницы речь о стандартных средствах языка.
Там нет ничего про ООП.

Там есть стенания об отсутствии типов-объектов. И нет ничего о недостатках [m]spl-types[/m], которые именно ими и являются.

Пространные рассуждения о том, почему массив не ведет себя как объект - мягко говоря могут вызвать только недоумение.
А почему он должен себя так вести? PHP не обязывался быть реинкарнацией SmallTalk.

Потом откровенно садитесь в лужу с ArrayObject ожидая от него какого-то приведения типов.

Потом перепрыгиваете на скорость работы его и наследников.

Так о чем же речь шла на полстраницы?

P.S.
Утром приду, разнесу вас всех. Готовьтесь
Свежо предание, да верится с трудом.
 

Духовность™

Продвинутый новичок
ArrayObject ожидая от него какого-то приведения типов
это было бы вполне логичным. Посмотрите на досуге, как реализуют ArrayAccess. Там идет именно неявное преобразование посредством реализации абстрактных методов. Без подобной реализации всем этим SPL-овским классам - грош цена, ибо PHP оперирует массивом как основополагающим default типом для списков-хешей.

И нет ничего о недостатках spl-types, которые именно ими и являются.
spl-types - это то, о чем я и говорил - попытка направить PHP в область объектной типизации примитивных типов. В чем я не прав? И какие недостатки я должен о нем рассказывать? Я не знаком с этим экспериментальным расширением. Вы меня в этом собираетесь обвинять?))
 

fixxxer

К.О.
Партнер клуба
AmdY

Питон он слишком специфический (нет интерфейсов, протектедов и приватов - хак с __ не считается), с большими наростами исторически сложившейся фигни (old style vs new style classes - попробуй разобраться в разнице механизмов множественного наследования без поллитры); метаклассы же делают его (в первом грубом приближении) вообще гибридом class-based и prototype-based языка. Поначалу выглядит все симпатично, но если попробуешь вникнуть в детали (а не тупо юзать джанги всякие, не заглядывая в их код), понимаешь, что та же редька, что и c PHP - рос, рос и хаками оброс. :)

Это не значит, что на нем писать нельзя. Можно, в основном благодаря продуманной стандартной библиотеке и общей легкости и более-менее логической завершенности синтаксиса. Но ООП там очень специфическое, чтобы такое рекомендовать как пример. :) Функциональщина, кстати, на нем красива вполне (для чайников варнинг - не путать с процедурным подходом!)

Ruby, кстати, тоже неправильный. :) Но все же его больше причин называть объектным. А то, что он кусок тормоза, это да, но это темы не касается %)
 

Fortop

Новичок
Посмотрите на досуге, как реализуют ArrayAccess. Там идет именно неявное преобразование посредством реализации абстрактных методов.
Вы полагаете я с этим интерфейсом не знаком? Вы ошибаетесь.
Но Вы говорите глупости и в этом случае
PHP:
class C implements ArrayAccess {...}

$a = new C;
$a['key'] = array('a' => 1);
$a->key; // ok
$a->key->a; // epic fail
И так будет до тех пор пока Вы не удосужитесь явно присвоить таки объект, а не массив. Вы должны явно определить метод offsetSet так чтобы приходящие массивы преобразовывались в объект с интерфейсом ArrayAccess. Вы уже второй раз наступаете на одни и те же грабли. Сколько можно?

spl-types - это то, о чем я и говорил - попытка направить PHP в область объектной типизации примитивных типов. В чем я не прав?
Я так понимаю что беседую с автором Spl? Откуда такая точная информация о том, что это такое?
 

fixxxer

К.О.
Партнер клуба
Автор оригинала: triumvirat

если не будешь спорить с очевидным, как они, то да :)
А чего тут спорить. Все озвученные проблемы имеют место быть. Похапе же. Гибрид с проблемами роста, причем гибрид довольно неаккуратный и логически незавершенный.

Но жить с этим можно. :)

-~{}~ 16.02.10 04:09:

Кстати, это не самое страшное - пиши ArrayObject::create(array(...)) =)

А вот то, что приходится писать бяку вида
PHP:
class Foo {

    public function merge($Source) {
        if (!is_array($Source) || !($Source instanceof ArrayAccess && $Source instanceof Iterator)) {
           throw new InvalidArgumentException(...)
        }
        foreach ($Source ...) 
    }

}
это гораздо больше бесит =) Конечно, это все спокойно выносится в Assert::isTraversable итд, но тем не менее.
 

HraKK

Мудак
Команда форума
О чем спор то? Ну есть у ПХП грехи и что? Блин, давайте я вам с ходу назову еще 30 грехов пхп, а потом 30 грехов с++, потом плавно перескачу на Lua и что? Что от этого измениться? Очередная тема о розовых слониках?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Автор оригинала: HraKK
О чем спор то? Ну есть у ПХП грехи и что? Блин, давайте я вам с ходу назову еще 30 грехов пхп, а потом 30 грехов с++, потом плавно перескачу на Lua и что? Что от этого измениться? Очередная тема о розовых слониках?
+1 Можно сидеть и рассуждать, как все плохо и несовершенно, или работать.
Совершенных вещей не бывает.
 

whirlwind

TDD infected, paranoid
triumvirat чего ты хочешь от языка, который изначально Personal Home Page Tools ? Тут в пору не возмущаться, а радоваться, что из того что было, сделали то что есть.
 

Beavis

Banned
тут даже на риторический вопрос столько обсуждений развели....))
 

Adelf

Administrator
Команда форума
triumvirat чего ты хочешь от языка, который изначально Personal Home Page Tools?
Иногда так хочется, чтобы кто-нибудь забыл о совместимости и сделал из него язык-конфетку. Но это все мечты.
 

zerkms

TDD infected
Команда форума
изначально Personal Home Page Tools ? Тут в пору не возмущаться, а радоваться, что из того что было, сделали то что есть.
ну вообще в первую версию от "zend" не вошло ни строки кода от personal home page tools afair.
 

Sigorma

Новичок
Автор оригинала: triumvirat
Процедурный подход в PHP и ОО. Налицо несовместимость синтаксиса.
Итого: Процедурный подход в PHP + набор дополнительных (не нативных) функций для поддержки ОО
Продолжаем работать =)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Автор оригинала: triumvirat
PHP:
$error['value']->asort();
- это где-то в середине сценария или даже в отдельном файле.

Что это такое? Массив с объектом у которого есть метод asort или объект возвращающий значение-объект у которого есть метод asort?
Очевидно, что это массив, у которого по ключу 'value' записана ссылка на объект.
Если внутри это объект, возвращающий значение-объект - для нас это все-равно массив.
Я не думаю, как работа с массивом реализована в исходниках ZE - структурой, классом, массивом, или макросами, не думаю и здесь.

Дай пример _путаницы_.
Может, мы по-разному понимаем значение слова "путаница"?

-~{}~ 16.02.10 10:06:

fixxxer> приходится писать бяку вида
да, неудобства с новыми фичами есть :( ... цена за новые возможности.
 

whirlwind

TDD infected, paranoid
Автор оригинала: zerkms
ну вообще в первую версию от "zend" не вошло ни строки кода от personal home page tools afair.
А я не про реализацию, а про подход. Для примера можно сравнить историю perl и php. Perl разработал лингвист и у него была цель разрабатать новый язык. А пых создал разработчик домашних страниц. То есть цели стояли абсолютно разные. Претензии по поводу чистоты яп в пыхе могут быть только от незнания или от неосознания.
 

Духовность™

Продвинутый новичок
Вы должны явно определить метод offsetSet так чтобы приходящие массивы преобразовывались в объект с интерфейсом ArrayAccess.
так о том и речь, что без этого преобразования метода суть всех этих SPL-овских фитч совершенно не ясна. Они попросту бесполезны.

Я так понимаю что беседую с автором Spl? Откуда такая точная информация о том, что это такое?
а как иначе объяснить появление SPL и подобных решений?
 
Сверху