Browsing projects by Tag(s)

Select a tag to browse associated projects and drill deeper into the tag cloud.

Showing page 1 of 2

php-judy is a PHP extension for the Judy C library. A Judy array is a complex but very fast associative array data structure for storing and looking up values using integer or string keys. Unlike normal arrays, Judy arrays may be sparse; that is, they may have large ranges of unassigned indices. ... [More] Judy1 - maps an Index (word) to a bit JudyL - maps an Index (word) to a Value (word/pointer) JudySL - maps an Index (null terminated string) to a Value JudyHS - maps an Index (array-of-bytes) of Length to a Value [Less]

5.0
 
  0 reviews  |  1 user  |  3,792 lines of code  |  4 current contributors  |  Analyzed 4 days ago
 
 

Functional programming languages, such as Haskell, ML and OPAL, are interesting and have different ideas from imperative programming languages. I cannot say that FPLs are more effective than IPLs, but they look more mathematical and algorithmic. Especially sequence data type of FPLs is quite ... [More] remarkable. I just wanted to make some functional-programming-language-like sequence data type. As I commented already, this doesn't provide better performance for your web projects, but it will provide fun and ideas of FPLs for you. [Less]

0
 
  0 reviews  |  0 users  |  366 lines of code  |  0 current contributors  |  Analyzed 10 days ago
 
 

The goal of this project is to bring a nicer syntax for dealing with arrays to php itself. immediate it just wraps a lot of the existing array functions into an object which allows a more object oriented way of handling data. Immediately this project is prototyped in php itself but eventually I ... [More] would like to provide a c php extension. To provide a quick example here are some things possible with this project in comparison to other languages: //python version: noprimes = [j for i in range(2, 8) for j in range(i*2, 50, i)] primes = [x for x in range(2, 50) if x not in noprimes] //phparrayplus version: $noprimes = xR(2,8)->for_each('xR($x*2,50,$x)->out')->flatten; $primes = xR(2,50)->diff($noprimes); //Or as a lovely one liner: $primes = xR(2,50)->diff(xR(2,8)->for_each('xR($x*2,50,$x)->out')->flatten); //common lisp: (loop for x from 0 to 100 if (> (* x x) 3) collect (* 2 x)) //phparrayplus version: $C = xR(100)->if_only('($x*$x) > 3')->for_each('2*$x'); //factorial in phparrayplus, nothing else to compare this too - just cool: function fac($n){ return xR(1,$n)->reduce('$x*$y'); } //fib sequence in phparrayplus php -e xH(0,1)->expand('$x+$y',20) //perl perl -e'@p=(0,1);until($#p>20){print"$p[-2]\n”;push @p,$p[-2]+$p[-1]}’ //ruby ruby -e ‘p,c=0,1;20.times{p p;c=p+p=c}’ //python version: S = [x**2 for x in range(10)] V = [2**i for i in range(13)] M = [x for x in S if x % 2 == 0] P = [str(round(355/113.0, i)) for i in range(1,6)] F = [x.strip() for x in [' banana', ' loganberry ']] VEC = [2, 4, 6] X = [3*x for x in vec if x > 3] X1 = [[x,x**2] for x in vec] //phparrayplus version: $S = xR(10)->for_each('pow($x,2)'); $V = xR(13)->for_each('pow($x,2)'); $M = xH($S)->if_only('$x % 2 == 0'); $P = xR(1,6)->for_each('round(355/113.0,$x)'); $F = xH(' banana', ' loganberry ')->map('trim'); $VEC = xH(2,4,6); $X = xH($VEC)->if_only('$x > 3')->for_each('3*$x'); $X1 = xH($VEC)->for_each('Array($x,pow($x,2))');It may not be as pretty as python (mainly in that code blocks have to be passed as strings) but I think the syntax is fairly readable/sensible. I will be updating the wiki shortly to reflect the entire api as well as uploading the initial release of the codebase (all one files). [Less]

0
 
  0 reviews  |  0 users  |  408 lines of code  |  0 current contributors  |  Analyzed 5 days ago
 
 

A library of PHP functions and classes to use. Library Management and Documentation too!

0
 
  0 reviews  |  0 users  |  3,167 lines of code  |  0 current contributors  |  Analyzed 1 day ago
 
 

Over the years I have crated allow of home grown code, which I now wish to share.

0
 
  0 reviews  |  0 users  |  0 current contributors  |  Analyzed 3 days ago
 
 

A data base can be created from set of text files of key-value format called entities. A set of entities can be queried, grouped and managed in stream manner. One can execute SQL-like statements over them. Current implementation Language implementation status availability current release ... [More] php alpha svn to be announced C++ in progress svn to be announced java in progress svn to be announced Further reading: About and Introduction [Less]

0
 
  0 reviews  |  0 users  |  4,109 lines of code  |  0 current contributors  |  Analyzed 10 days ago
 
 

Takes an array as an input and displays a plain text table output that looks similar to a MySQL command line result table. Roadmap: Support a maximum field/table width so that it can be used for plain-text emails. Support field vertical tables in addition to horizontal ones (so the field ... [More] names run down the side instead of across the top). If you are interested in helping with this project, then please write to me on: paul at fubra dot com. [Less]

0
 
  0 reviews  |  0 users  |  126 lines of code  |  0 current contributors  |  Analyzed 6 days ago
 
 

Convenience arrays and access methods for the full IANA Language Subtag Registry. Allows case sensitive or insensitive searches of the catalog, and converts locale codes to meaningful descriptions

0
 
  0 reviews  |  0 users  |  1,243 lines of code  |  0 current contributors  |  Analyzed 7 days ago
 
 

Объекты: String, Map, Number - аналоги примитивов string, array, float+integer из PHP-Core Описание, ПреимуществаВ отличии от большинства известных оберток(в том числе в отличии от ... [More] встроенного ArrayObject), которые есть только "демонстрацией возможностей" и базируются на рефлексии и лени автора - данная библиотека создана для полной замены встроенных примитивов полноценными объектами. Более логические и последовательные названия методов, порядок аргументов в них и возвращаемые значения, чем в встроенных функциях php (смотрите интерфейсы соответствующих объектов. Обратите внимание на, например String::preg*() методы) Поддерживается цепочка вызовов с плавным переходом между объектами $map = new Map('a', 'b', 'c'); $map ->join() // String object ->add('def') // 'abcdef' ->split(2) // Map object ->length(); // Number objectПлавное "встраивание" в интерфейс заменяющее примитивы в таких переменных, как $GLOBALS, $_POST и т.п. на соответствующие объекты: Map::found(); // Основаться $GLOBALS->dump();Позволяет работать с объектами и как с примитивами и как с объектами (тем не менее, нельзя забывать, что объекты передаются по ссылке, тогда как массивы копируются, из-за чего может быть несущественное отличие в поведении): $map = new Map('a', 'b', 'c'); foreach ($map as $val) { echo $val; // 'abc' } while($map->each($val)) { echo $val; // 'abc' }Имеется встроенный объект для создания дампа объектов (аналог var_dump), который не выводит лишнюю информацию о данных объектах как встроенные аналоги, и метод dump() у каждого из объектов, чтобы можно было получить значение объекта не выходя из цепочки: Map::create('a', 'b', 'c') ->join(',') ->dump() ->replace('b', 'e') ->dump(); /** (String) 'a,b,c' (String) 'a,e,c' */ echo new Dump($somevar); // Если мы не знаем, каким объектом будет $somevarВозможность создания объекта через статический метод, или функцию для того, чтобы сразу начать работать с цепочкой: $map = String::create('def') ->insert('abc ') ->changeCase(Str::TITLE, Str::UP_FORCED) ->split() ->dump(); $map = o('def') ->insert('abc ') ->changeCase(Str::TITLE, Str::UP_FORCED) ->split() ->dump(); /** Map [ 0 : 'A' 1 : 'b' 2 : 'c' 3 : ' ' 4 : 'D' 5 : 'e' 6 : 'f' ] */Все методы, которые должны работать с примитивами - одинаково хорошо работают что с примитивами, что с их объектными аналогами: o('a', 'b') ->merge( new Map('c', 'd'), array('e', 'f'), 'g', new String('h') ) ->dump(); /** Map [ 0 : 'a' 1 : 'b' 2 : 'c' 3 : 'd' 4 : 'e' 5 : 'f' 6 : 'g' 7 : (String) 'h' ] */Экземпляр объекта Map содержит в себе примитивы, или объекты - зависимо от того, что передать объекту, а подменяет примитивы на соответствующие объекты только при надобности (для того, чтобы не делать лишней работы). Кроме маленьких пометок во время Dump'a на работу конечного пользователя никак не влияет данный ньюанс - все выходные данные есть либо объектами, либо типами, которые не предусмотренны данной библиотекой (например, bool). (См. предыдущий пример) Позволяет реализовать практически полноценный typehinting, что нельзя реализовать при использовании примитивов: function testTypeHinting (Number $num) { return $num->root(5); } $num = new Number (15); $str = new String ('test'); testTypeHinting($num)->dump(); // (Number) 1.71877192759 // testTypeHinting($str)->dump(); // Catchable fatal errorОт данных объектов можно наследовать другие объекты, которые будут реализовывать расширенный функционал, или специальную логику, сохранив при этом функционал родительского класса Встроенный конвертер величин, поддерживающий группировку: // Сколько байт в 300 гигабайтах? echo o(300)->convert('Bytes', 'GiB', 'B'), "\n"; // 322122547200 // Сколько секунд в 3 сутках? echo o(3) ->convert('Time', 'Day', 'Second'), "\n"; // 259200 // Сколько метров в одной морской миле? echo o(1) ->convert('Length', 'SeaMile', 'Metr'), "\n"; // 1852Вместе с возможностью наследования позволяет делать очень полезные вещи (в примере видна группировка через точку): // Смотрите «KurrencyKonverter.php» в «Downloads» $uah = new KurrencyKonverter (500); // Сколько долларов у нас будет, если мы купим их в Украине за 500 гривень echo $uah ->copy() ->convert('Currency.Ua.Sell', 'UAH', 'USD') ->toString(2); // 63,02 // Сколько долларов у нас будет, если мы купим в Украине за 500 гривень рубли, а потом в России за эти же рубли - доллары echo $uah ->convert('Currency.Ua.Sell', 'UAH', 'RUR') ->convert('Currency.Ru' , 'RUR', 'USD') ->toString(2); // 44,77Поддерживает последние актуальные версии php и их особенности, например замыкания (closures). При этом, возможность их использовать совершенно не мешает для более молодых версий этого языка: $n = new Number(115); if($n->match(function ($t) { return ($t->root(3)->gt(5)); // Если кубический корень числа больше 5 - истина, иначе - ложь })) { echo '$n is greater than 125', "\n"; } else { echo '$n is smaller or equal than 125', "\n"; } $s = new String("Some string with number(e.g. 12345), is here"); echo o($s)->replace(array('string', 'number'), function ($r) { return $r->changeCase(Str::ALL, Str::RANDOM); }); // Some sTrINg with NuMbEr(e.g. 12345), is here echo "\n"; o(1, 4, 7, 9, 15)->clear(function ($key, $value) { if ($key == 0) { return true; // Элемент с ключем равным 0 оставляем независимо от значение } if ($value > 6 and $value < 13) { return true; // Оставить только значения между 6 и 13 } else { return false; // Все остальное убить } })->dump(); // [7, 9]; // Метод сам определит - здесь лямбдда функция, или обычный параметр (например, строка, или объект String): echo o($s)->pregReplace("/([0-9]+)/", function ($m) { return "!$m[0]!"; // Some string with number(e.g. !12345!), is here }); echo "\n"; // Для более старых версий все-еще поддерживается старый синтаксис: echo o($s)->pregReplaceCallback("/([0-9]+)/", create_function('$m', 'return "!$m[0]!";' // Some string with number(e.g. !12345!), is here ));Ну и вспомним Руби :) Конечно, не так изящно, как в оригинале, но, согласитесь, своя романтика в этом есть. o(5)->times(function ($i) use ($n) { echo ($i->isEven()) ? "Even: " : "Odd : "; echo $n , "." , $i , ";\n"; }); /* Even: 5.0; Odd : 5.1; Even: 5.2; Odd : 5.3; Even: 5.4; */НедостаткиВозможно уменьшение скорости работы методов в ~1-3 раза по сравнению с core-функциями (зависимо от объема данных - чем больше объем - тем меньше увеличение времени), но учитывая, что вызов core-функций обычно(тем более, с малыми переданными объемами) - это лишь крохи в сравнении с временем затраченным на выполнение запросов - общее увеличение времени выполнения работы скрипта будет незначительным (на 1-5%). Расширенный примерДанный пример стоит детальнее посмотреть в браузере Map::found(); $GLOBALS->dump(); class Test { public $beerpub = 123; protected $protos = 234.543; private $vipriv = array (); private $array = array(); public function __construct () { $this->vipriv['this'] = $this; $this->vipriv['str'] = new String ('privStr'); $this->vipriv['int'] = new Number (13); } } $map = Map::create( new String ('test'), new Number (14), new Map ('aaa', 'bbb'), new Test () ) ->merge( array ('value1', 'key'=>'value2'), 'String', 123 ) ->dump() ->remove(3) ->join(',', 1) // String ->split(8) // Map ->dump(); $map->reset(); $newMap = new Map; while ($map->each($key, $value)) { if (mt_rand(0, 1)) { $newMap[] = $value; } } $newMap ->join(' ') // String ->replace(',', 'зпт') ->changeCase(Str::TITLE, Str::UP_FORCED) ->insert('[вставлено]', 5) ->length() // Number ->multiply(4) ->add(6, 9, new Number(15)) ->divided(5) ->sum(Number::EVEN) ->dump() // (Number) 1062.51 ->root(4) ->round(3) // Just 3 symbols after dot ->dump() // (Number) 5.709 ->round(Number::UP) // round to up (ceil) ->hex('15abbf') ->toString() // String ('1420223') ->hash() // 'md5' as default ->dump(); // (String) '0d1b1558224c8f3b125cd905c378c9f7'ЗависимостиНеобязательны интерфейсы (предоставлены в ознакомительных целях). Можете убить, не забыв при этом удалить из объявления классов. ПодключениеRequire всех файлов библиотеки ТребованияЖелательна последняя версия PHP. Минимум - пятая. При недостаточно высокой версии могут не работать некоторые методы (например, метод hash для php < 5.1.2 может работать некорректно для нестандартных алгоритмов (все, кроме "md5", "sha1", "crc32") ПодробнееВ коде и интерфейсах [Less]

0
 
  0 reviews  |  0 users  |  2,616 lines of code  |  0 current contributors  |  Analyzed 5 days ago
 
 

PHP_ArrayOfClass for strongly-typed array/collection/list and to get control over what can be added to it. InstallationCan be installed through PEAR: pear channel-discover pear.11abacus.com pear install 11abacus/PHP_ArrayOf

0
 
  0 reviews  |  0 users  |  0 current contributors
 
 
 
 

Creative Commons License Copyright © 2013 Black Duck Software, Inc. and its contributors, Some Rights Reserved. Unless otherwise marked, this work is licensed under a Creative Commons Attribution 3.0 Unported License . Ohloh ® and the Ohloh logo are trademarks of Black Duck Software, Inc. in the United States and/or other jurisdictions. All other trademarks are the property of their respective holders.