LINUX.ORG.RU

onPHP-0.2.8


0

0

Вышла новая версия свободного и достаточно богатого возможностями OO-фреймворка для PHP 5.0/5.1. В новой версии исправлено множество ошибок и недоработок по сравнению с предыдущей.

В примерах использования появилось упоминание о мета-конфигурации, но в самом тарболе ее поддержка не наблюдается.

>>> ChangeLog

anonymous

Проверено: anonymous_incognito ()

Ответ на: комментарий от anonymous

>А в Вашем случае это не ассоциатывный масив?

1) А ___зачем___ его делать ассоциативным?

2) Вы что-нибудь про хеширование слышали?

stellar
()
Ответ на: комментарий от anonymous

>Интересно как Вы будете искать нужные куски СКЛ по 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.

stellar
()
Ответ на: комментарий от stellar

А как нащет Общих кусков, и различных? Так по чуть-чуть - гляди и вырисуется достойный конкурент онПХП...

anonymous
()
Ответ на: комментарий от anonymous

Смеялся. onPHP - Неуловимый Джо, какие у него нах конкуренты?

Какой дебил станет его сравнивать с JSP+Spring+Hibernate?

anonymous
()
Ответ на: комментарий от anonymous

>А как нащет Общих кусков, и различных?

Еще раз и медленно:
Query oThisQuery(DialectQueryFactory -> GetQuery[THIS_QUERY_ID]);

Адресовать запрос можно по индексу, но
Query & operator[QueryIndexer] - это не обязательно прямой доступ к массиву.

Или Вы не знаете, что такое "перегрузка операторов"
и взаправду считаете, что запись "object[indexer]" всегда означает
только доступ к элементу массива/хэша?

stellar
()
Ответ на: комментарий от stellar

stellar, че ты с ним ругаешься. Скажи спасибо что он еще не написал ОО-обертки для html типа Table(), Td(), Tr() и так далее.

Аффтару: еще раз, посмотри на hibernate. Не в код, а в то, как он используется. Люди пишут запросы не в виде 10 строк кода, а в виде HQL (OQL). Это просто, удобно и понятно, причем достаточно интуитивно понятно. А диалект, навязываемый onPHP интуитивно понятен только автору более никому. Читать 5 минут 20 страниц мануала чтобы написать select id, name from users в виде цепочки вызовов и потом называть это быстрой разработкой может только реально обкуренный программист.
Потом hibernate, как ни странно, является кросс-базовым, то есть один и тот же код _БЕЗ ПЕРЕДЕЛОК_ будет работать и на MySQL и на Oracle и на Interbase. Меняется только файл с параметрами подключения к базе. onPHP такое пока что не снилось и написать кросс-базовое приложение на нем невозможно.

anonymous
()
Ответ на: комментарий от stellar

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

anonymous
()
Ответ на: комментарий от anonymous

> Потом hibernate, как ни странно, является кросс-базовым, то есть один и тот же код _БЕЗ ПЕРЕДЕЛОК_ будет работать и на MySQL и на Oracle и на Interbase. Меняется только файл с параметрами подключения к базе.

А если подумать хорошо? Вместо расплывчатого "Меняется только файл с
параметрами" вам называли короткий и понятный термин - драйвер "БД".
И в чём великая разница, поясните нам? Уровень абстракции один и тот же!
Что вы пытаетесь доказать, уважаемый? Что ваш хибернэйт длинее? ;)

anonymous
()

столько либидо, да на мирные бы цели.. :-)

=voxus

anonymous
()
Ответ на: комментарий от anonymous

>А если подумать хорошо? Вместо расплывчатого "Меняется только файл с 
>параметрами" вам называли короткий и понятный термин - драйвер "БД". 

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

>И в чём великая разница, поясните нам? Уровень абстракции один и тот же! 

Ничего подобного. Вас уже просили, причем несколько раз, 
прокомментировать вопрос с функциями,
делающими одно и то же или возвращающими один и тот же результат,
но имеющих различный синтаксис в разных диалектах (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
()
Ответ на: комментарий от anonymous

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

Простите, но если Вы не знаете, что такое Язык Структурированных 
Запросов, а значит, и что такое реляционая алгебра, теория множеств и 
НФ, Ваш уровень вряд ли выше MySQL 3.23.

Это не оскорбление, это констатация факта.

stellar
()

Да, и правильно ли я понимаю, что для описания синтаксиса 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

и плюс еще несколько десятков (или сотен?) разнообразнейших
врапперов для функций.

stellar
()
Ответ на: комментарий от stellar

> Пойдите, почитайте документацию, прежде чем сравнивать теплое с мягким.

Документацию на что? На Hibernate или на ваш C++ код?

> Вас уже просили, причем несколько раз, прокомментировать вопрос с функциями,

Я не аффтар, я другой человек.

> но имеющих различный синтаксис в разных диалектах (TO_CHAR / DATE_FORMAT).

Объясняю. По нормальному программиста не должно заботить расхождение а
синтаксисе разных версий SQL. Для того и существуют такие библиотеки.
Это их цель. Одна из целей. Убрать мусор в виде различий в синтаксисе.
Если что-то в данный момент не дописано, оно будет дописано позже. Но
смысл остаётся прежний. Идея не меняется. Я не поклонник этого onPHP,
но мне странно слышать огульное поругивание самой идеи, которую автор
хотел реализовать.

anonymous
()

Что за хрень на ЛОР'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/

anonymous
()

> Простите, но если Вы не знаете, что такое Язык Структурированных
> Запросов, а значит, и что такое реляционая алгебра, теория множеств и
> НФ, Ваш уровень вряд ли выше MySQL 3.23.

Ты явно заучился, и тебя распирает от гордости за крутейшие знания,
которые твоя голова вместила в себя. Осталась совсем малость - применить
их. А попробуй представить обратную ситуацию: человек пару десятков лет
работает с этим самым "Языком Структурированных Запросов", и его уже
блевать тянет от упоминания о нём, в особенности, когда его с большой
буквы называют "Структурированным" ;)

anonymous
()
Ответ на: комментарий от anonymous

>Документацию на что? На Hibernate или на ваш C++ код? 

На Hibernate.

>Объясняю. По нормальному программиста не должно заботить расхождение а 
>синтаксисе разных версий SQL. Для того и существуют такие библиотеки. 

Классно. Но ЧТО ДЕЛАТЬ СЕЙЧАС? Поймите, что если у кого-то есть проект,
где данные есть только трех типов - целочисленного, с плавающей точкой и текстового,
а дата и время хранится в секундах от начала Epoch, это отлично. 

Но ЧТО ДЕЛАТЬ НОРМАЛЬНЫМ людям, которые хранят в базах всякие там TIMESTAMPы,
INET, LOBы, OIDы ROWIDы и т.д.?
И что делать тем, кто создает свои типы данных?

>Это их цель. Одна из целей. Убрать мусор в виде различий в синтаксисе. 

Какие же сложные люди есть...
Скажите, чем отличается __токены__ SELECT, INSERT и UPDATE в Oracle, Informix и PostgreSQL?
И зачем надо было делать для них обертки, если различий в __токенах__ нет?

>Если что-то в данный момент не дописано, оно будет дописано позже. Но 
>смысл остаётся прежний. Идея не меняется.

И сколько времени потребуется для реализации инкапсуляции функций?
А сколько времени - для инкапсуляции сущностей? Список из 28 сущностей
Информикса я привел выше.

>Я не поклонник этого onPHP, 
>но мне странно слышать огульное поругивание самой идеи, которую автор 
>хотел реализовать. 

Оооохъ... Я не знаю, что на самом деле хотел реализовать автор,
но то, что получилось, ну никак "зрелым" проектом назвать нельзя.

stellar
()
Ответ на: комментарий от anonymous

>человек пару десятков лет 

Простите, сколько Вам лет и где можно увидеть Ваше профессиональное резюме,
человека, работающего с SQL около 20 лет?

stellar
()
Ответ на: комментарий от stellar

А может он не хочет про SQL знать от того, что на Дейталоге кодит? :)

anonymous
()
Ответ на: комментарий от anonymous

Длиннее. Прочитай документацию, потом тупи, пыхпыхный пианеришка.

anonymous
()
Ответ на: комментарий от anonymous

Обратите внимания, граждане, на какую часть данного экскурса в hibernate соблаговолило ответить гражданин автор.

Вердикт: афтар невменяем. Не будем лечить.

anonymous
()
Ответ на: комментарий от stellar

> Скажите, чем отличается __токены__ SELECT, INSERT и UPDATE в Oracle, Informix и PostgreSQL?

А почему такой малый набор СУБД? Есть ведь и такие, к которым этот
вопрос не применим по причине отсутствия. Да и мне как-то без разницы.
Одни недоучки сначала придумали SQL, другие недоучки сейчас цепляются
за него и восхваляют его величайшее достижение - отсутсвие разницы в
целых трёх токенах ;) Я плакалъ.

anonymous
()
Ответ на: комментарий от anonymous

Аффтар/не аффтар - по барабану. Ответь на простой вопрос, вот у меня запрос в hibernate типа:
> select cat from Cat as cat where cat.mate.name like '%s%'
причем код, где написан этот запрос, не будет зависить от того с какой базой работает приложение, то есть написав его единожды на машине с MySQL при миграции приложения на допустим Oracle, ни единой строчки кода не изменится.

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

anonymous
()
Ответ на: комментарий от anonymous

P.S. в данном случае у cat есть коллекция mates, так вот мы ищем кошака у которого есть mate с именем %s

anonymous
()
Ответ на: комментарий от anonymous

А Вы не задумывались как это работает?

anonymous
()
Ответ на: комментарий от anonymous

О! У объектно-ориентированной пидарвы уже и Кодд недоучка. Совсем быдло освинело!

anonymous
()
Ответ на: комментарий от anonymous

> а напиши в терминах onPHP то, как будет выглядеть аналогичный запрос,

В терминах DataObject могу:
$c = new DataObject_cat();
$m = new DataObjects_cat_mates();
$c->joinAdd($m);
$m->name = '%s%';
$c->find();

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.