blob: fbfcffe55899f8dd92f90794ef52bd8e9bbca3d2 [file] [log] [blame]
<?php
/**
* Copyright 2010-2014 baas-platform.com, Pty Ltd. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
namespace Apache\Usergrid\Native\Facades;
use Apache\Usergrid\Native\UsergridBootstrapper;
/**
* Class Usergrid
*
* @package Apache/Usergrid
* @version 1.0.0
* @author Jason Kristian <jasonkristian@gmail.com>
* @license Apache License, Version 2.0
* @copyright (c) 2008-2014, Baas Platform Pty. Ltd
* @link http://baas-platform.com
*/
class Usergrid
{
/**
* The Native Bootstrap instance.
*
* @var \Apache\Usergrid\Native\UsergridBootstrapper
*/
protected static $instance;
/**
* The Usergrid API instance.
*
* @var \Apache\Usergrid\Api\Usergrid
*/
protected $usergrid;
/**
* Constructor.
*
* @param \Apache\Usergrid\Native\UsergridBootstrapper $bootstraper
* @return \Apache\Usergrid\Native\Facades\Usergrid
*/
public function __construct(UsergridBootstrapper $bootstraper = null)
{
if (!$bootstraper) {
$bootstraper = new UsergridBootstrapper;
}
$this->usergrid = $bootstraper->createUsergrid();
}
/**
* Handle dynamic, static calls to the object.
*
* @param string $method
* @param array $args
* @return mixed
*/
public static function __callStatic($method, $args)
{
$instance = static::instance()->getUsergrid();
switch (count($args)) {
case 0:
return $instance->{$method}();
case 1:
return $instance->{$method}($args[0]);
case 2:
return $instance->{$method}($args[0], $args[1]);
case 3:
return $instance->{$method}($args[0], $args[1], $args[2]);
case 4:
return $instance->{$method}($args[0], $args[1], $args[2], $args[3]);
default:
return call_user_func_array([$instance, $method], $args);
}
}
/**
* Creates a new Native Bootstraper instance.
*
* @param \Apache\Usergrid\Native\UsergridBootstrapper $bootstrapper
* @return static
*/
public static function instance(UsergridBootstrapper $bootstrapper = null)
{
if (static::$instance === null) {
static::$instance = new static($bootstrapper);
}
return static::$instance;
}
/**
* Returns the Usergrid API instance.
*
* @return \Apache\Usergrid\Api\Usergrid
*/
public function getUsergrid()
{
return $this->usergrid;
}
}