FOF30\Model\DataModel\RelationManager::__call PHP Метод

__call() публичный Метод

You can also use it to get data of a relation using shorthand notation, e.g. $manager->getPhone($callback) instead of $manager->getData('phone', $callback);
public __call ( string $name, array $arguments ) : DataModel
$name string The magic method to call
$arguments array The arguments to the magic method
Результат FOF30\Model\DataModel The parent model, for chaining
    function __call($name, $arguments)
    {
        $numberOfArguments = count($arguments);
        if (isset(static::$relationTypes[$name])) {
            if ($numberOfArguments == 1) {
                return $this->addRelation($arguments[0], $name);
            } elseif ($numberOfArguments == 2) {
                return $this->addRelation($arguments[0], $name, $arguments[1]);
            } elseif ($numberOfArguments == 3) {
                return $this->addRelation($arguments[0], $name, $arguments[1], $arguments[2]);
            } elseif ($numberOfArguments == 4) {
                return $this->addRelation($arguments[0], $name, $arguments[1], $arguments[2], $arguments[3]);
            } elseif ($numberOfArguments == 5) {
                return $this->addRelation($arguments[0], $name, $arguments[1], $arguments[2], $arguments[3], $arguments[4]);
            } elseif ($numberOfArguments == 6) {
                return $this->addRelation($arguments[0], $name, $arguments[1], $arguments[2], $arguments[3], $arguments[4], $arguments[5]);
            } elseif ($numberOfArguments >= 7) {
                return $this->addRelation($arguments[0], $name, $arguments[1], $arguments[2], $arguments[3], $arguments[4], $arguments[5], $arguments[6]);
            } else {
                throw new \InvalidArgumentException("You can not create an unnamed '{$name}' relation");
            }
        } elseif (substr($name, 0, 3) == 'get') {
            $relationName = substr($name, 3);
            $relationName = strtolower($relationName[0]) . substr($relationName, 1);
            if ($numberOfArguments == 0) {
                return $this->getData($relationName);
            } elseif ($numberOfArguments == 1) {
                return $this->getData($relationName, $arguments[0]);
            } elseif ($numberOfArguments == 2) {
                return $this->getData($relationName, $arguments[0], $arguments[1]);
            } else {
                throw new \InvalidArgumentException("Invalid number of arguments getting data for the '{$relationName}' relation");
            }
        }
        // Throw an exception otherwise
        throw new DataModel\Relation\Exception\RelationTypeNotFound("Relation type '{$name}' not known to relation manager");
    }