namespace OC;
+/**
+ * Class ArrayParser
+ *
+ * @package OC
+ */
class ArrayParser {
const TYPE_NUM = 1;
const TYPE_BOOL = 2;
* @param string $string
* @return array|bool|int|null|string
*/
- function parsePHP($string) {
+ public function parsePHP($string) {
$string = $this->stripPHPTags($string);
$string = $this->stripAssignAndReturn($string);
return $this->parse($string);
* @param string $string
* @return string
*/
- function stripPHPTags($string) {
+ private function stripPHPTags($string) {
$string = trim($string);
if (substr($string, 0, 5) === '<?php') {
$string = substr($string, 5);
* @param string $string
* @return string
*/
- function stripAssignAndReturn($string) {
+ private function stripAssignAndReturn($string) {
$string = trim($string);
if (substr($string, 0, 6) === 'return') {
$string = substr($string, 6);
* @param string $string
* @return array|bool|int|null|string
*/
- function parse($string) {
+ private function parse($string) {
$string = trim($string);
$string = trim($string, ';');
switch ($this->getType($string)) {
* @param string $string
* @return int
*/
- function getType($string) {
+ private function getType($string) {
$string = strtolower($string);
$first = substr($string, 0, 1);
$last = substr($string, -1, 1);
* @param string $string
* @return string
*/
- function parseString($string) {
+ private function parseString($string) {
return substr($string, 1, -1);
}
* @param string $string
* @return int
*/
- function parseNum($string) {
+ private function parseNum($string) {
return intval($string);
}
* @param string $string
* @return bool
*/
- function parseBool($string) {
+ private function parseBool($string) {
$string = strtolower($string);
return $string === 'true';
}
* @param string $string
* @return array
*/
- function parseArray($string) {
+ private function parseArray($string) {
$body = substr($string, 5);
$body = trim($body);
$body = substr($body, 1, -1);
$items = $this->splitArray($body);
- $result = array();
+ $result = [];
$lastKey = -1;
foreach ($items as $item) {
$item = trim($item);
/**
* @param string $body
* @return array
+ * @throws \UnexpectedValueException
*/
- function splitArray($body) {
- $inSingleQuote = false;//keep track if we are inside quotes
+ private function splitArray($body) {
+ $inSingleQuote = false; //keep track if we are inside quotes
$inDoubleQuote = false;
- $bracketDepth = 0;//keep track if we are inside brackets
- $parts = array();
+ $bracketDepth = 0; //keep track if we are inside brackets
+ $parts = [];
$start = 0;
- $escaped = false;//keep track if we are after an escape character
- $skips = array();//keep track of the escape characters we need to remove from the result
+ $escaped = false; //keep track if we are after an escape character
+ $skips = []; //keep track of the escape characters we need to remove from the result
if (substr($body, -1, 1) !== ',') {
$body .= ',';
}
$bracketDepth++;
} elseif ($char === ')') {
if ($bracketDepth <= 0) {
- throw new UnexpectedValueException();
+ throw new \UnexpectedValueException();
} else {
$bracketDepth--;
}
}
$parts[] = $part;
$start = $i + 1;
- $skips = array();
+ $skips = [];
}
}
$escaped = false;