; php.ini
extension=php_mbstring.dll
bottomline is a PHP utility library, similar to Underscore/Lodash, that utilizes namespace
s and dynamic auto loading to improve library performance.
bottomline.php
is the entry point for the bottomline utility library- All bottomline methods are stored in separate files within their respective
namespace
folder outlined in/src/__
- Tests reflect the
namespace
defined within the library and are processed using phpunit testing- To test bottomline, install phpunit and in the terminal, run
phpunit
- To test bottomline, install phpunit and in the terminal, run
/bottomline
├── /images
│ └── (place relevant graphics in this folder)
├── /src
│ └── /__
│ ├── /arrays
│ ├── /collections
│ ├── /functions
│ ├── /objects
│ ├── /utilities
│ └── load.php # (autoloader script for all bottomline methods)
├── /tests
│ ├── arrays.php
│ ├── chaining.php
│ ├── collections.php
│ ├── functions.php
│ ├── objects.php
│ └── utilities.php
├── .gitignore
├── .travis.yaml
├── bottomline.php
├── composer.json
├── phpunit.xml
├── LICENSE
└── README.md
NOTE: bottomline is not currently in feature parity with Underscore/Lodash. Review the contributing section for more information.
Install bottomline as described in the methods below:
Put the require statement in your composer.json
file and run composer install
:
{
"require": {
...
"maciejczyzewski/bottomline": "*"
...
}
}
Put the require statement in your code:
require 'bottomline/bottomline.php';
__::append([1, 2, 3], 4);
// >> [1, 2, 3, 4]
Returns a copy of the array with falsy values removed.
__::compact([0, 1, false, 2, '', 3]);
// >> [1, 2, 3]
Flattens a multidimensional array. If you pass shallow, the array will only be flattened a single level.
__::flatten([1, 2, [3, [4]]], [flatten]);
// >> [1, 2, 3, 4]
Patches array with list of xpath-value pairs.
__::patch(['addr' => ['country' => 'US', 'zip' => 12345]], ['/addr/country' => 'CA', '/addr/zip' => 54321]);
// >> ['addr' => ['country' => 'CA', 'zip' => 54321]]
__::prepend([1, 2, 3], 4);
// >> [4, 1, 2, 3]
Returns an array of integers from start to stop (exclusive) by step.
__::range(1, 10, 2);
// >> [1, 3, 5, 7, 9]
Returns an array of $n
length with each index containing the provided value.
__::repeat('foo', 3);
// >> ['foo', 'foo', 'foo']
coming soon...
Returns the values in the collection that pass the truth test.
$a = [
['name' => 'fred', 'age' => 32],
['name' => 'maciej', 'age' => 16]
];
__::filter($a, function($n) {
return $n['age'] > 24;
});
// >> [['name' => 'fred', 'age' => 32]]
Gets the first element of an array. Passing n returns the first n elements.
__::first([1, 2, 3, 4, 5], 2);
// >> [1, 2]
__::get(['foo' => ['bar' => 'ter']], 'foo.bar');
// >> 'ter'
Gets the last element of an array. Passing n returns the last n elements.
__::last([1, 2, 3, 4, 5], 2);
// >> [4, 5]
Returns an array of values by mapping each in collection through the iterator.
__::map([1, 2, 3], function($n) {
return $n * 3;
});
// >> [3, 6, 9]
Returns the maximum value from the collection. If passed an iterator, max will return max value returned by the iterator.
__::max([1, 2, 3]);
// >> 3
Returns the minimum value from the collection. If passed an iterator, min will return min value returned by the iterator.
__::min([1, 2, 3]);
// >> 1
Returns an array of values belonging to a given property of each item in a collection.
$a = [
['foo' => 'bar', 'bis' => 'ter' ],
['foo' => 'bar2', 'bis' => 'ter2'],
];
__::pluck($a, 'foo');
// >> ['bar', 'bar2']
Returns a collection of objects matching the given array of parameters.
$a = [
['name' => 'fred', 'age' => 32],
['name' => 'maciej', 'age' => 16]
];
__::where($a, ['age' => 16]);
// >> [['name' => 'maciej', 'age' => 16]]
__::slug('Jakieś zdanie z dużą ilością obcych znaków!');
// >> 'jakies-zdanie-z-duza-iloscia-obcych-znakow'
$options = [
'delimiter' => '-',
'limit' => 30,
'lowercase' => true,
'replacements' => array(),
'transliterate' => true
]
__::slug('Something you don\'t know about know about Jackson', $options);
// >> 'something-you-dont-know-about'
$string = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque et mi orci.';
__::truncate($string);
// >> 'Lorem ipsum dolor sit amet, consectetur...'
__::truncate($string, 60);
// >> 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pel...'
__::urlify('I love https://google.com');
// >> 'I love <a href="https://google.com">google.com</a>'
__::isArray([1, 2, 3]);
// >> true
__::isArray(123);
// >> false
__::isFunction(function ($a) { return $a + 2; });
// >> true
__::isNull(null);
// >> true
__::isNumber(123);
// >> true
__::isObject('fred');
// >> false
__::isString('fred');
// >> true
__::isEmail('[email protected]');
// >> true
__::isEmail('test_test.com');
// >> false
Wrapper of the time()
function that returns the current offset in seconds since the Unix Epoch.
__::now();
// >> 1417546029
Wrapper of the time()
function that returns the current offset in seconds since the Unix Epoch.
__::stringContains('waffle', 'wafflecone');
// >> true
Please feel free to contribute to this project! Pull requests and feature requests welcome! ✌️
See LICENSE file in this repository.
- Brandtley McMinn (@bmcminn)