Имя: Пароль:
IT
Веб-мастеринг
аналог Reflection у JS есть?
0 Fragster
 
гуру
05.03.13
13:34
особенно интересует, можно ли получить данные как в PHP у ReflectionFunction:

           $parameterArray = $method->getParameters();
           $docComment = $method->getDocComment();

Задача - описать в функции требования к ее вызову, не влияющие на ее работу. В PHP можно указать требуемый класс параметра а также получить текст phpDoc, если он есть и отпарсить его. Соответственно в этом phpDocтоже можно что-то описывать.
1 Fragster
 
гуру
05.03.13
13:46
что, никто не знает про Reflection&
2 Fragster
 
гуру
05.03.13
13:46
?
3 pumbaEO
 
05.03.13
13:57
javascriptDoc ?
4 Fragster
 
гуру
05.03.13
13:58
(3) как к нему из кода обратиться?
5 pumbaEO
 
05.03.13
14:01
(4) хочешь его программно нагенерить?
6 Fragster
 
гуру
05.03.13
14:03
(5) наоборот, программно посмотреть методы класса, их параметры, комменты к ним и т.п.
7 pumbaEO
 
05.03.13
14:05
8 Fragster
 
гуру
05.03.13
14:06
(7) т.е. ты предлагаешь анализировать текст скрипта из самого скрипта?
9 badboychik
 
05.03.13
14:06
нафига тебе это надо
10 Fragster
 
гуру
05.03.13
14:07
(9) за тем же, зачем и в php - генерить wsdl для 1ски
11 Fragster
 
гуру
05.03.13
14:07
в php все получилось
12 badboychik
 
05.03.13
14:08
- результат = [];
- пройтись циклом по объекту: for (var k in obj); либо for (var k in obj) if (obj.hasOwnProperty(k)), если интересуют только родные свойства (первый цикл захватит и свойства из цепи прототипов);
- проверять, если typeof obj[k] == 'function', добавлять в массив результатов: результат.push(obj[k]);, либо просто k, если интересуют именно названия;
- вернуть результат
13 Fragster
 
гуру
05.03.13
14:10
(12) да это понятно. вопрос в том, что в комментах (а в пхп - прямо в определении) можно указывать класс параметра, соответственно, рекурсивно его добавлять в WSDL. так-то, конечно, any type везде проставить можно и лепить объекты по жесткой схеме, а не фабрикой...
14 Fragster
 
гуру
05.03.13
14:10
а в комментах - повторение там какое-нибудь
15 badboychik
 
05.03.13
14:12
в JS аннотации из Java хочешь что ли, изврат какой то по моему. WSDL генерится по коду JS? Как это выглядит?
16 Fragster
 
гуру
05.03.13
14:16
(15) у меня сейчас WSDLгенерится по коду php тем же скриптом, который и обрабатывает WS: http://fragster.ru/perfomanceTest/ws.php?wsdl

изнутри кода используется так:

$ws = new WS1c('http://fragster.ru/multithread', 'fragster');

$ws->methods[] = new ReflectionFunction('appendTestResult');
$ws->methods[] = new ReflectionFunction('test');

header("Content-Type: text/xml;");
if (isset($_REQUEST['wsdl'])) {
   echo $ws->getWSDL();
} else {
   echo $ws->handleRequest();
}

при этом все параметры разворачиваются в классы и далее рекурсивно, из комментов некоторое количество инфы берется, например:

class SubResult {

   /**
    *
    * @var string
    */
   var $test;

   /**
    * @var float
    */
   var $result;

   /**
    * Количество потоков
    * @var decimal
    */
   var $threadCount;

   /**
    * ошибки
    * @minOccurs 0
    * @maxOccurs unbounded
    * @var string
    */
   var $errors;

}
17 Fragster
 
гуру
05.03.13
14:19
просто производительности php не совсем хватает для некоторых задач (общение между потоками через СУБД), на node.js хочу запилить нечто подобное
18 badboychik
 
05.03.13
14:30
маньяк )
Ну для ноды выше приводили библиотеку в (7)
19 Fragster
 
гуру
05.03.13
14:33
(18) зато теперь могу за пару минут наклепать произвольный вебсервис для 1ски и встроить, соответственно, в любой сайт на php, если оно нужно будет.
20 pumbaEO
 
05.03.13
14:33
А производительности node разве хватит? Не знаю, что там у тебя за общение между потоками, но redis или мемкэш тебе прийдется использовать, а там главное хватай быстрей, кидай дальше, пока летит отдыхай.
21 pumbaEO
 
05.03.13
14:33
+(20) что в node что в php
22 badboychik
 
05.03.13
14:34
нода сильно параллельная, пишут что миллионы операций в секунду может выполнять
23 Fragster
 
гуру
05.03.13
14:37
(20) мне именно одно адресное пространство нужно, чтобы я из одного потока мог напрямую юзать переменные другого потока. js я немного знаю, в отличии от java, соответственно, хотел заюзать его для этих целей.
24 Fragster
 
гуру
05.03.13
14:37
как раз кэширование мне не нужно вообще
25 pumbaEO
 
05.03.13
14:44
(24) Имхо тебе очередь нужна.

(22) как только дело коснется записи данных или чтения (не из памяти) , так уже и не миллионы.
26 Fragster
 
гуру
05.03.13
14:48
(25).1 какая очередь? у меня все потоки должны иметь доступ условно к одной переменной
(25).2 как раз потому от пхп хочу отказаться - чтобы не юзать для межпроцессного взаимодействия СУБД, а заюзать общее адесное пространство сервера на node
27 Fragster
 
гуру
05.03.13
14:49
есть, конечно, вариант с sqlite с таблицей в памяти
28 Fragster
 
гуру
14.03.13
16:37
апну по приколу.
29 Fragster
 
гуру
14.03.13
16:38
ну и вопрос до кучи - кто-нибудть уже сделал парсер JSON<=>XDTO?