Вход Регистрация
Файл: concrete5.7.5.6/concrete/vendor/league/url/src/Components/AbstractArray.php
Строк: 115
<?php
/**
* This file is part of the League.url library
*
* @license http://opensource.org/licenses/MIT
* @link https://github.com/thephpleague/url/
* @version 3.3.5
* @package League.url
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace LeagueUrlComponents;

use 
ArrayIterator;
use 
Closure;
use 
Countable;
use 
IteratorAggregate;
use 
RuntimeException;
use 
Traversable;

/**
 *  A class to manipulate URL Array like components
 *
 *  @package League.url
 *  @since  3.0.0
 */
abstract class AbstractArray implements IteratorAggregateCountable
{
    
/**
     * container holder
     *
     * @var array
     */
    
protected $data = array();

    
/**
     * {@inheritdoc}
     */
    
public function toArray()
    {
        return 
$this->data;
    }

    
/**
     * {@inheritdoc}
     */
    
public function keys()
    {
        
$args func_get_args();
        if (! 
$args) {
            return 
array_keys($this->data);
        }

        return 
array_keys($this->data$args[0], true);
    }

    
/**
     * IteratorAggregate Interface method
     *
     * @return ArrayIterator
     */
    
public function getIterator()
    {
        return new 
ArrayIterator($this->data);
    }

    
/**
     * Countable Interface method
     *
     * @param int $mode
     *
     * @return integer
     */
    
public function count($mode COUNT_NORMAL)
    {
        return 
count($this->data$mode);
    }

    
/**
     * ArrayAccess Interface method
     *
     * @param int|string $offset
     *
     * @return bool
     */
    
public function offsetExists($offset)
    {
        return isset(
$this->data[$offset]);
    }

    
/**
     * ArrayAccess Interface method
     *
     * @param int|string $offset
     */
    
public function offsetUnset($offset)
    {
        unset(
$this->data[$offset]);
    }

    
/**
     * ArrayAccess Interface method
     *
     * @param int|string $offset
     *
     * @return null
     */
    
public function offsetGet($offset)
    {
        if (isset(
$this->data[$offset])) {
            return 
$this->data[$offset];
        }

        return 
null;
    }

    public static function 
isStringable($data)
    {
        return 
is_string($data) || (is_object($data)) && (method_exists($data'__toString'));
    }

    
/**
     * convert a given data into an array
     *
     * @param mixed    $data     the data to insert
     * @param Closure $callback a callable function to be called to parse
     *                           a given string into the corresponding component
     *
     * @return array
     *
     * @throws RuntimeException if the data is not valid
     */
    
protected function convertToArray($dataClosure $callback)
    {
        if (
is_null($data)) {
            return array();
        }

        if (
$data instanceof Traversable) {
            return 
iterator_to_array($data);
        }

        if (
self::isStringable($data)) {
            
$data = (string) $data;
            
$data trim($data);
            
$data $callback($data);
        }

        if (! 
is_array($data)) {
            throw new 
RuntimeException('Your submitted data could not be converted into a proper array');
        }

        return 
$data;
    }
}
Онлайн: 0
Реклама