2017 © Pedro Peláez
 

library utils

Various utility classes & functions

image

oasis/utils

Various utility classes & functions

  • Thursday, May 3, 2018
  • by no7mks
  • Repository
  • 2 Watchers
  • 0 Stars
  • 5,016 Installations
  • PHP
  • 4 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 28 Versions
  • 10 % Grown

The README.md

Utilities for Oasis projects

This component provides a number of PHP helper classes for common tasks., (*1)

Installation

Install the latest version with command below:, (*2)

$ composer require oasis/utils

Data Provider

Normally we use data provider to create a validatable container. Oasis\Mlib\Utils\ArrayDataProvider is probably the most used., (*3)

An example:, (*4)

<?php

use Oasis\Mlib\Utils\ArrayDataProvider;
use Oasis\Mlib\Utils\DataProviderInterface;

$data = [
    "int-key" => 10,
    "string-key" => "name",
    "switch" => "true",
    "wrong-type" => "hello",
];

$dp = new ArrayDataProvider($data);

// $i = 10
$i = $dp->getMandatory('int-key', DataProviderInterface::INT_TYPE);
// throws Oasis\Mlib\Utils\Exceptions\MandatoryValueMissingException
$i = $dp->getMandatory('int-key2', DataProviderInterface::INT_TYPE);
// $i = 5
$i = $dp->getOptional('int-key2', DataProviderInterface::INT_TYPE, 5);

// $s = 'name';
$s = $dp->getMandatory('string-key', DataProviderInterface::STRING_TYPE);

// $onoff = true;
$onoff = $dp->getOptional('switch', DataProviderInterface::BOOL_TYPE, false);

// throws Oasis\Mlib\Utils\Exceptions\InvalidDataTypeException
$wrongType = $dp->getMandatory('wrong-type', DataProviderInterface::BOOL_TYPE);

Data Packer

When you have some objects that should be write to or read from a stream (file, network), Oasis\Mlib\Utils\DataPacker is just for you., (*5)

Below is an example using Data Packer:, (*6)

<?php

use Oasis\Mlib\Utils\DataPacker;

$obj = new stdClass();

$tmpfile = tempnam(sys_get_temp_dir(), '');

$packer = new DataPacker();
$fh     = fopen($tmpfile, 'w');
$packer->attachStream($fh);
$packer->packToStream($obj);
$packer->packToStream($obj);
$packer->packToStream($obj);
fclose($fh);

$fh = fopen($tmpfile, 'r');
$packer->attachStream($fh);
while ($obj = $packer->unpackFromStream()) {
    // we should have 3 $obj unpacked from stream
}

Caesar Cipher

Caesar Cipher is one of the earliest known and simplest ciphers. It is a type of substitution cipher in which each letter in the plaintext is 'shifted' a certain number of places down the alphabet., (*7)

oasis/utils provides easy cipher class for Caesar Cipher:, (*8)

<?php
use Oasis\Mlib\Utils\CaesarCipher;

$cipher = new CaesarCipher();

// encrypt and decrypt integer
$enc = $cipher->encrypt(1234);
$dec = $cipher->decrypt($enc); // $dec = 1234

// encrypt and decrypt string
$enc = $cipher->encrypt("abcdefg");
$dec = $cipher->decrypt($enc); // $dec = "abcdefg"

// using stronger cipher
$cipher = new CaesarCipher(
    32, // bits to use in partition, default to 32, must be divisable by partition size
    8,  // partition size, even positive number, default to 8
    12  // strength, positive number, default to 5
);

RC4

RC4 is a very simple stream cipher. oasis/utils provides quick access to RC4 encryption. Below is an example:, (*9)

<?php

use Oasis\Mlib\Utils\Rc4;

$encrypted = Rc4::rc4('random-key', 'abc');

// to decrypt, call the encrypt function with same key
$decrypted = Rc4::rc4('random-key', $encrypted); // $decrypted = 'abc'

String Utils

Oasis\Mlib\Utils\StringUtils class provides some simple string related functions:, (*10)

<?php

use Oasis\Mlib\Utils\StringUtils;

$str = 'abcdefg';

var_dump(StringUtils::stringStartsWith($str, 'a')); // true
var_dump(StringUtils::stringStartsWith($str, 'b')); // false
var_dump(StringUtils::stringEndsWith($str, 'g')); // true
var_dump(StringUtils::stringEndsWith($str, 'f')); // false

var_dump(StringUtils::stringChopdown($str, 4)); // 'abcd'

Memory Usage Monitor

Sometimes, PHP script can run out of memory. It is especially important to monitor memory usage is a long-running script. oasis/utils provides some tools for memory usage monitor and management on-the-fly., (*11)

Example:, (*12)

<?php

use Oasis\Mlib\Utils\CommonUtils;

// check the current memory usage and increase if needed
CommonUtils::monitorMemoryUsage();

// if the script declares tick, this will monitor memory usage every time tick is triggered
CommonUtils::registerMemoryMonitorForTick();

Tick is a declare directive which PHP supports to monitor low-level code execution., (*13)

The Versions

03/05 2018

dev-master

9999999-dev

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

03/05 2018

v1.9.0

1.9.0.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

30/12 2017

v1.8.0

1.8.0.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

12/06 2017

v1.7.0

1.7.0.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

22/05 2017

v1.6.3

1.6.3.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

10/05 2017

v1.6.2

1.6.2.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

03/09 2016

v1.6.1

1.6.1.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

02/09 2016

v1.6.0

1.6.0.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

09/08 2016

v1.5.0

1.5.0.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

12/07 2016

v1.4.1

1.4.1.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

16/05 2016

v1.4.0

1.4.0.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

14/04 2016

v1.3.4

1.3.4.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

14/04 2016

v1.3.3

1.3.3.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

14/04 2016

v1.3.2

1.3.2.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

16/03 2016

v1.3.1

1.3.1.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

18/02 2016

v1.3.0

1.3.0.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

17/02 2016

v1.2.6

1.2.6.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

17/02 2016

v1.2.5

1.2.5.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

15/02 2016

v1.2.4

1.2.4.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

21/01 2016

v1.2.3

1.2.3.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

19/01 2016

v1.2.2

1.2.2.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

19/01 2016

v1.2.1

1.2.1.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

09/01 2016

v1.2.0

1.2.0.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

29/12 2015

v1.1.2

1.1.2.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

06/12 2015

v1.1.1

1.1.1.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

05/12 2015

v1.1.0

1.1.0.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

04/12 2015

v1.0

1.0.0.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang

04/12 2015

v1.0.1

1.0.1.0

Various utility classes & functions

  Sources   Download

MIT

The Requires

 

The Development Requires

by Minhao Zhang