You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

137 lines
2.8 KiB

<?php
/**
* PHPLib
*
* A PHP library to wrap php functions in a standard fashion
*
* @package PHPLib
* @author Timothy J. Warren
* @copyright Copyright (c) 2013
* @link https://github.com/aviat4ion/PHPLib
* @license MIT
*/
// --------------------------------------------------------------------------
namespace PHPUtil;
/**
* Wrapper over php string functions with a consistent argument system
*/
class Str {
/**
* Original string to be modified
* @var string
*/
protected $original;
/**
* Constructor
*
* @param string $string
* @return Str
*/
public function __construct($string)
{
$this->original = $string;
}
/**
* Enable using the object as a function
*
* @param string $string
* @return $this
*/
public function __invoke($string)
{
$this->__construct($string);
return $this;
}
/**
* Output from the last method
*
* @return string
*/
public function __toString()
{
return (is_string($this->original))
? $this->original
: $this->_();
}
/**
* Return output from the last method
*
* @return mixed
*/
public function _()
{
return $this->original;
}
/**
* Formats a string according to the pattern passed to the str() function
*
* @see http://php.net/manual/function.sprintf.php
* @param array $replacements
* @return $this
*/
public function format(array $replacements)
{
// Add the pattern string as the first argument
array_unshift($replacements, $this->original);
// Return the formatted string
$this->original = call_user_func_array('sprintf', $replacements);
return $this;
}
/**
* Check whether a string matches the provided pattern
*
* @param string $pattern
* @return bool
*/
public function match($pattern)
{
return (bool) preg_match($pattern, $this->original);
}
/**
* Do a basic string replacement
*
* @see http://php.net/manual/function.str-replace.php
* @param mixed $pattern
* @param mixed $replacement
* @return $this
*/
public function replace($pattern, $replacement=NULL)
{
if (is_array($pattern) && is_null($replacement))
{
$replacement = array_values($pattern);
$pattern = array_keys($pattern);
}
$this->original = str_replace($pattern, $replacement, $this->original);
return $this;
}
/**
* String replacement via a regular expression
*
* @see http://php.net/manual/function.preg-replace.php
* @param mixed $pattern
* @param mixed $replacement
* @return $this
*/
public function reg_replace($pattern, $replacement)
{
$this->original = preg_replace($pattern, $replacement, $this->original);
return $this;
}
}
// End of str.php