Git Product home page Git Product logo

string's Introduction

Looking for maintainers, I no longer do much if any PHP dev, I have moved on, mostly work in dotnet core, node.js & golang these days. If anyone is keen to take over these projects, get in touch - [email protected]

The String Gear

Build Status Windows Build Status Latest Stable Version Total Downloads License HHVM Tested Coverage Status Scrutinizer Code Quality

An object oriented way to work with strings in PHP, with multibyte support baked in.

Credit & Inspiration

The original library https://github.com/danielstjules/Stringy The voku fork https://github.com/voku/Stringy

This version builds on voku's work. The main aim was to make the management of the code base easier by splitting the mountain of methods that make up the Stringy class into traits.

This does mean we have bumped the minimum PHP version to 5.4+

NOTE: There are also a few other changes, this is not an API compatible fork.

How to Install

Installation via composer is easy:

composer require gears/string

Then import the Str class into your script:

use Gears\String\Str;

OO and Chaining

The library offers OO method chaining, as seen below:

echo Str::s('fòô     bàř')->removeWhitespace()->swapCase(); // 'FÒÔ BÀŘ'

Gears\String\Str has a __toString() method, which returns the current string when the object is used in a string context, ie: (string) Str::s('foo')

Implemented Interfaces

Gears\String\Str implements the IteratorAggregate interface, meaning that foreach can be used with an instance of the class:

$str = Str::s('fòôbàř');
foreach ($str as $char) {
    echo $char;
}
// 'fòôbàř'

It implements the Countable interface, enabling the use of count() to retrieve the number of characters in the string:

$str = Str::s('fòô');
count($str);  // 3

Furthermore, the ArrayAccess interface has been implemented. As a result, isset() can be used to check if a character at a specific index exists. And since Gears\String\Str is immutable, any call to offsetSet or offsetUnset will throw an exception. offsetGet has been implemented, however, and accepts both positive and negative indexes. Invalid indexes result in an OutOfBoundsException.

$str = Str::s('bàř');
echo $str[2];     // 'ř'
echo $str[-2];    // 'à'
isset($str[-4]);  // false

$str[3];          // OutOfBoundsException
$str[2] = 'a';    // Exception

The Methods

All methods are documented with PSR-5 docblocks that provide autocomplete hints to any decent IDE such as PHP Storm or Atom with atom-autocomplete-php.


Developed by Brad Jones - [email protected]

string's People

Contributors

brad-jones avatar voku avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.