Вышла новая версия свободного и достаточно богатого возможностями OO-фреймворка для PHP 5.0/5.1. В новой версии исправлено множество ошибок и недоработок по сравнению с предыдущей.
В примерах использования появилось упоминание о мета-конфигурации, но в самом тарболе ее поддержка не наблюдается.
>Интересно как Вы будете искать нужные куски СКЛ по ID? И что помогает?
...
Query oThisQuery(DialectQueryFactory -> GetQuery[THIS_QUERY_ID]);
...
PreparedQuery PQ = oThisQuery.Prepare();
...
PQ.BindByName(":a", 134);
PQ.BindByName(":b", "xyz");
PQ.Execute();
На досуге почитайте, что такое "перегрузка операторов",
чтобы не приставать на счет типа объекта THIS_QUERY_ID.
>А как нащет Общих кусков, и различных?
Еще раз и медленно:
Query oThisQuery(DialectQueryFactory -> GetQuery[THIS_QUERY_ID]);
Адресовать запрос можно по индексу, но
Query & operator[QueryIndexer] - это не обязательно прямой доступ к массиву.
Или Вы не знаете, что такое "перегрузка операторов"
и взаправду считаете, что запись "object[indexer]" всегда означает
только доступ к элементу массива/хэша?
stellar, че ты с ним ругаешься. Скажи спасибо что он еще не написал ОО-обертки для html типа Table(), Td(), Tr() и так далее.
Аффтару: еще раз, посмотри на hibernate. Не в код, а в то, как он используется. Люди пишут запросы не в виде 10 строк кода, а в виде HQL (OQL). Это просто, удобно и понятно, причем достаточно интуитивно понятно. А диалект, навязываемый onPHP интуитивно понятен только автору более никому. Читать 5 минут 20 страниц мануала чтобы написать select id, name from users в виде цепочки вызовов и потом называть это быстрой разработкой может только реально обкуренный программист.
Потом hibernate, как ни странно, является кросс-базовым, то есть один и тот же код _БЕЗ ПЕРЕДЕЛОК_ будет работать и на MySQL и на Oracle и на Interbase. Меняется только файл с параметрами подключения к базе. onPHP такое пока что не снилось и написать кросс-базовое приложение на нем невозможно.
stellar, ты понятен и предсказуем. Но, увы, твоя технология уже давно
покрылась плесенью. Я предпочитаю не знать (и вообще - забыть, как
страшный сон), что такое SQL. И мне плевать, насколько он "прост", этот
SQL.
> Потом hibernate, как ни странно, является кросс-базовым, то есть один и тот же код _БЕЗ ПЕРЕДЕЛОК_ будет работать и на MySQL и на Oracle и на Interbase. Меняется только файл с параметрами подключения к базе.
А если подумать хорошо? Вместо расплывчатого "Меняется только файл с
параметрами" вам называли короткий и понятный термин - драйвер "БД".
И в чём великая разница, поясните нам? Уровень абстракции один и тот же!
Что вы пытаетесь доказать, уважаемый? Что ваш хибернэйт длинее? ;)
>А если подумать хорошо? Вместо расплывчатого "Меняется только файл с
>параметрами" вам называли короткий и понятный термин - драйвер "БД".
Вы издеваетесь или просто не понимаете о чем речь?
Пойдите, почитайте документацию, прежде чем сравнивать теплое с мягким.
>И в чём великая разница, поясните нам? Уровень абстракции один и тот же!
Ничего подобного. Вас уже просили, причем несколько раз,
прокомментировать вопрос с функциями,
делающими одно и то же или возвращающими один и тот же результат,
но имеющих различный синтаксис в разных диалектах (TO_CHAR / DATE_FORMAT).
А также ситуацию с:
1) приведением типов. (чтобы все в "драйвере",а не ВОдномБольшомКлассе)
2) Prepared queries
3) server-based Prepared statements
4) поддержкой асинхронных событий базы
5) состоянием дел с курсорами.
6) работой с LOB
7) возможностью получения типа возвращаемого из базы объекта.
8) аналогами LIMIT/OFFSET
9) возвращаемыми данными из хранимых процедур
10) специфичными вещами типа GET DIAGNOSTICS (я не про plpgsql) ....
>столько либидо, да на мирные бы цели.. :-)
>=voxus
О! Автор пожаловал! Добрый вечер, автор!
Может быть, Вы спуститесь с небес на грешную землю и ответите на те вопросы,
на которые другие поклонники onPHP не ответили?
А то вопросов много, а вместо ответов только слив и переход на личности....
>stellar, ты понятен и предсказуем. Но, увы, твоя технология уже
>давно покрылась плесенью. Я предпочитаю не знать (и вообще - забыть,
>как страшный сон), что такое SQL. И мне плевать, насколько
>он "прост", этот SQL
Простите, но если Вы не знаете, что такое Язык Структурированных
Запросов, а значит, и что такое реляционая алгебра, теория множеств и
НФ, Ваш уровень вряд ли выше MySQL 3.23.
Это не оскорбление, это констатация факта.
Да, и правильно ли я понимаю, что для описания синтаксиса Informix
придется сделать (по аналогии с существующими) следующие классы:
AllocateQuery
AlterQuery
BeginQuery
CloseQuery
CommitQuery
ConnectQuery
CreateQuery
DeclareQuery
DeleteQuery
DropQuery
ExecuteQuery
FetchQuery
FlushQuery
FreeQuery
GetQuery
GrantQuery
InsertQuery
LoadQuery
LockQueryE
OpenQuery
PrepareQuery
RenameQuery
RevokeQuery
SelectQuery
SetQuery
UnloadQuery
UnlockQuery
UpdateQuery
и плюс еще несколько десятков (или сотен?) разнообразнейших
врапперов для функций.
> Пойдите, почитайте документацию, прежде чем сравнивать теплое с мягким.
Документацию на что? На Hibernate или на ваш C++ код?
> Вас уже просили, причем несколько раз, прокомментировать вопрос с функциями,
Я не аффтар, я другой человек.
> но имеющих различный синтаксис в разных диалектах (TO_CHAR / DATE_FORMAT).
Объясняю. По нормальному программиста не должно заботить расхождение а
синтаксисе разных версий SQL. Для того и существуют такие библиотеки.
Это их цель. Одна из целей. Убрать мусор в виде различий в синтаксисе.
Если что-то в данный момент не дописано, оно будет дописано позже. Но
смысл остаётся прежний. Идея не меняется. Я не поклонник этого onPHP,
но мне странно слышать огульное поругивание самой идеи, которую автор
хотел реализовать.
Что за хрень на ЛОР'e опять?
При попытке ответить выбрасывает следующее:
ERROR: relation "replyto" does not exist
К сожалению, произошла исключительная ситуация при генерации страницы. Если вы считаете, что она возникла по причине нашей ошибки, пожалуйста сообщите нам о ошибке и условиях ее возникновения. Не забудьте также указать полный URL странички, вызвавшей исключение.
java.sql.SQLException: ERROR: relation "replyto" does not exist
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.
java:1471)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1
256)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:175)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:
389)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statem
ent.java:314)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.
java:221)
at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.jav
a:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.postgresql.ds.common.PooledConnectionImpl$StatementHandler.invoke(PooledConn
ectionImpl.java:467)
at $Proxy4.executeQuery(Unknown Source)
at _add_0comment__jsp._jspService(_add_0comment__jsp.java:273)
at com.caucho.jsp.JavaPage.service(JavaPage.java:75)
at com.caucho.jsp.Page.subservice(Page.java:497)
at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:182)
at com.caucho.server.http.Invocation.service(Invocation.java:312)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135)
at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:342)
at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:272)
at com.caucho.server.TcpConnection.run(TcpConnection.java:137)
at java.lang.Thread.run(Thread.java:536)
http://www.linux.org.ru/
> Простите, но если Вы не знаете, что такое Язык Структурированных
> Запросов, а значит, и что такое реляционая алгебра, теория множеств и
> НФ, Ваш уровень вряд ли выше MySQL 3.23.
Ты явно заучился, и тебя распирает от гордости за крутейшие знания,
которые твоя голова вместила в себя. Осталась совсем малость - применить
их. А попробуй представить обратную ситуацию: человек пару десятков лет
работает с этим самым "Языком Структурированных Запросов", и его уже
блевать тянет от упоминания о нём, в особенности, когда его с большой
буквы называют "Структурированным" ;)
>Документацию на что? На Hibernate или на ваш C++ код?
На Hibernate.
>Объясняю. По нормальному программиста не должно заботить расхождение а
>синтаксисе разных версий SQL. Для того и существуют такие библиотеки.
Классно. Но ЧТО ДЕЛАТЬ СЕЙЧАС? Поймите, что если у кого-то есть проект,
где данные есть только трех типов - целочисленного, с плавающей точкой и текстового,
а дата и время хранится в секундах от начала Epoch, это отлично.
Но ЧТО ДЕЛАТЬ НОРМАЛЬНЫМ людям, которые хранят в базах всякие там TIMESTAMPы,
INET, LOBы, OIDы ROWIDы и т.д.?
И что делать тем, кто создает свои типы данных?
>Это их цель. Одна из целей. Убрать мусор в виде различий в синтаксисе.
Какие же сложные люди есть...
Скажите, чем отличается __токены__ SELECT, INSERT и UPDATE в Oracle, Informix и PostgreSQL?
И зачем надо было делать для них обертки, если различий в __токенах__ нет?
>Если что-то в данный момент не дописано, оно будет дописано позже. Но
>смысл остаётся прежний. Идея не меняется.
И сколько времени потребуется для реализации инкапсуляции функций?
А сколько времени - для инкапсуляции сущностей? Список из 28 сущностей
Информикса я привел выше.
>Я не поклонник этого onPHP,
>но мне странно слышать огульное поругивание самой идеи, которую автор
>хотел реализовать.
Оооохъ... Я не знаю, что на самом деле хотел реализовать автор,
но то, что получилось, ну никак "зрелым" проектом назвать нельзя.
> Скажите, чем отличается __токены__ SELECT, INSERT и UPDATE в Oracle, Informix и PostgreSQL?
А почему такой малый набор СУБД? Есть ведь и такие, к которым этот
вопрос не применим по причине отсутствия. Да и мне как-то без разницы.
Одни недоучки сначала придумали SQL, другие недоучки сейчас цепляются
за него и восхваляют его величайшее достижение - отсутсвие разницы в
целых трёх токенах ;) Я плакалъ.
Аффтар/не аффтар - по барабану. Ответь на простой вопрос, вот у меня запрос в hibernate типа:
> select cat from Cat as cat where cat.mate.name like '%s%'
причем код, где написан этот запрос, не будет зависить от того с какой базой работает приложение, то есть написав его единожды на машине с MySQL при миграции приложения на допустим Oracle, ни единой строчки кода не изменится.
а напиши в терминах onPHP то, как будет выглядеть аналогичный запрос, про переносимость между базами уже было сказано много, поэтому этот ньюанс опустим. Просто напиши как в onPHP реализовать вот такой вот простой запрос. Ждем.