| |||
![]() | |||
| Последние новости | Птичка | Из раздела FAQ |
| [29 июня 2012]
Выпущена версия 3.4.2: Выложенная ранее RC версия объявлена релизом. Также обновлены все SQL драйвера (версия API осталась прежней, т.е. старые драйвера будут продолжать работать), документация, библиотеки xml (для win32 версии) и архив с конфигурационным файлом. Полный лог изменений доступен в CVS. [23 июня 2012] Выпущен релиз кандидат версии 3.4.2. Классу curl добавлено три новые опции: verbose, stderr и maxfilesize. Добавлен конструктор ^date::today[], создающий объект типа date на 00:00:00 текущего дня. Метод ^дата.sql-string[] теперь может принимать один из следующих строковых параметров: «datetime», «date» или «time». В зависимости от параметра вызова он возвращает дату+время, только дату или только время. Конструктор ^file::create[...] теперь поддерживает binary формат. Добавлен новый формат вызова конструктора ^file::create[]: ^file::create[строка или файл[;$.name[имя файла] $.mode[text|binary] $.content-type[...] $.charset[...]]]. При выполнении конструктора ^file::create[text;...;содержимое] выполняется нормализация переводов строк в «содержимом». При создании файлов binary нормализация не делается. Методы ^file:dirname[путь], ^file:basename[путь], ^file:justname[путь] и ^file:justext[путь] теперь корректно обрабатывают пути в формате Windows. Методы ^file:dirname[путь] и ^file:basename[путь] теперь работают как одноимённые команды *nix. Конструктор ^file::load[...;http://...] разбирает все полученные от удалённого сервера cookies и помещает их в таблицу .cookies со столбцами name, value, expires, max-age, domain, path, httponly и secure. Конструктор ^file::base64[закодированное;опции] и метод ^string:base64[закодированное;опции] теперь имеют опцию $.strict(true), при задании которой происходит выдача исключения, если невозможно декодирование всей закодированной строки. Без указания этой опции, как и раньше, возвращается лишь то, что было возможно декодировать. Снижено потребление памяти при декодировании base64 строки с помощью конструктора ^file::base64[закодированное] и метода ^string:base64[закодированное]. В теле метода ^хэш.foreach обращение к некоторым методам итерируемого хэша (таким как ^хэш._count[], ^хэш._keys[], ^хэш.contains[ключ], ^хэш._at[...]) теперь не приводит к возникновению исключений «hash flocked». Метод ^json:string[объект;опции] теперь производит поиск методов сериализации, указанных с помощью опций вида $.имя-класса[$метод] также и в родительских классах. Метод ^json:string[объект;опции] теперь умеет сериализовывать объекты класса xdoc. Параметры преобразования объекта в строку могут быть переданы с помощью опции $.xdoc[]. Метод ^json:string[объект;опции] в качестве значений опции $.file[] в дополнение к значениям text и base64 позволяет задать значение stat, которое равносильно отсутствию опции (способ сериализации файла «по умолчанию»). Методу ^json:string[объект;опции] теперь с помощью опции $._default[$метод] можно указать пользовательский метод, который будет вызываться для сериализации объектов всех пользовательских классов (кроме тех, для которых метод сериализации явно задан с помощью опций вида $.имя-класса[$метод]). Методу ^json:parse[json-строка;опции] теперь с помощью опции $.array[$метод] можно указать пользовательский метод, который будет вызываться для разбора массивов. Методу ^json:parse[json-строка;опции] теперь с помощью опции $.taint[язык преобразования] можно указать «язык», который будет присвоен всем строкам результирующего хэша. После выполнения метода ^json:parse[json-строка;опции] в результирующем хэше все числовые значения теперь представлены в виде double (double имеет более широкий диапазон, чем используемый ранее для целых чисел int). Расширен диапазон обрабатываемых значений методом ^math:convert[...]. Кроме этого, при возникновении переполнения (при указании очень больших чисел) теперь возникает исключение. Появилась встроенная поддержка работы с серверами memcached, реализованная с использованием библиотеки libmemcached. Добавлен метод ^reflection:uid[объект], возвращающий уникальный идентификатор объекта. Добавлен метод ^reflection:delete[объект или класс;имя поля], с помощью которого можно удалить поле у указанного объекта или класса (действует аналогично ^хэш.delete[ключ], но для объектов и классов). Добавлены методы ^reflection:method[класс или объект;имя метода] и ^reflection:field[класс или объект;имя поля] с помощью которых можно получить метод или значение поля у указанного объекта или класса. При работе метода ^строка.match[] в кодировке UTF8 символьные классы \w и т.п. теперь также включают в себя unicode properties (раньше включали в себя только ASCII символы). Метод ^строка.replace[...] теперь может быть вызван с двумя строковыми параметрами: «что искать» и «на что заменить». Подобный вариант вызова (как и вариант вызова, когда в таблице замен указана только одна пара для замены) дополнительно оптимизирован. Метод ^таблица.count[] теперь поддерживает опции. При задании строкового значения columns будет возвращено количество столбцов в именованной таблице (равносильно следующему: $c[^таблица.columns[]]^c.count[]), cells — будет возвращено количество ячеек в текущей строке таблицы, rows — метод вернёт количество строк в таблице (равносильно вызову без параметров). Метод ^таблица.select(выражение)[опции] теперь может принимать отрицательные значения в опции $.offset. В этом случае отсчёт целевой строки ведётся с конца таблицы и значение -1 соответствует последней строке. Добавлена валидация входных параметров в следующих DOM-методах: createElement, createElementNS, createAttribute, createAttributeNS, createEntityReference, getAttribute, getAttributeNS, setAttribute, setAttributeNS, removeAttribute, removeAttributeNS, getAttributeNode, getAttributeNodeNS, hasAttribute, hasAttributeNS, getElementById, getElementsByTagName, getElementsByTagNameNS. Методу ^xdoc.file[опции] добавлена новая опция $.name[имя файла]. Методам ^xdoc.string[опции] и ^xdoc.file[опции] добавлена опция $.charset[], выполняющая те же самые функции, что и уже имеющаяся опция $.encoding[]. Вы не можете, однако, указывать две эти опции одновременно. Если у ^switch или ^case указано значение типа bool, то их значения сравниваются сравниваются как bool (раньше сравнивались как double). Исключения при выполнении операторов ^break[] и ^continue[] вне цикла теперь имеют тип «parser.break» и «parser.continue» соответственно (было: «parser.runtime»). В конфигурационном методе (@conf[]) класса MAIN можно указать $STRICT-VARS(true), после чего обращение к неинициализированным переменным будет приводить к исключению. Преобразование данных вида file-spec теперь не трогает символ «'» (апостроф) (раньше он преобразовывался в «_26»). MySQL драйверу добавлена новая опция local_infile=1, с помощью которой можно включить поддержку LOAD DATA LOCAL из клиентской библиотеки, если MySQL сервер был собран без указания опции --enable-local-infile (подробности). Версия скомпонована с последними версиями библиотек PCRE (8.30) и libxml2 (2.8.0). Исправлен ряд ошибок: При выполнении ^empty.split[...] возвращается таблица с одной пустой ячейкой. В HTTP заголовке content-disposition имя файла теперь заключается в кавычки. Запись пустого $request:post-body на диск теперь не приводит к исключению «saving stat-ed file». При выполнении $t[^table::create{$empty}] теперь создаётся именованная пустая таблица с одним пустым столбцом. Раньше выполнение ^число.div(0) и ^число.mod(0) не вызывало исключений. Если в классе присутствует setter (@SET_name[]) и default getter (@GET_DEFAULT[]), то при обращении к свойству $name не возникает исключения «property has no getter method», а происходит выполнение default getter-а. Исправлена ошибка, возникающая иногда при работе с partial классами. Исправлена ошибка, из-за которой не всегда корректно проверялось допустимое количество параметров у пользовательских методов. | ![]() | Что такое Parser? А зачем он вообще? Если есть PHP, то для чего Parser? Я программировал на других языках, можно ли, в двух словах, что же такого удобного в Parser? @header[] ... @footer[] ... @navigation[] ... @body[] ... Я в браузере вижу код на Parser, он не обработался, в чем может быть причина (использую веб-сервер Apache)?
Parser/3.x.xЕсли вы это увидели, парсер скопирован куда следует, права на него установлены правильные. Если парсер скопирован правильно и вы не забыли прописать в .htaccess инструкции, указанные в документации, возможно вы забыли разрешить апачу обработку .htaccess в файле httpd.conf с помощью инструкции AllowOverride. Чтобы проверить, обрабатывается ли у вас .htaccess — впишите в него какую-нибудь заведомо неверную инструкцию, например «mytest», в самое начало. Если при релоаде страницы вы не увидите 500 ошибку (она обязательно появится если все настроено верно) — значит данный файл у вас не обрабатывается. Измените значение AllowOverride или обратитесь к вашему администратору. |
|
| E-mail: mailbox@parser.ru | Copyright © 1997–2011 Студия Артемия Лебедева |