Jarves\Objects::getDefinition PHP Method

getDefinition() public method

Get object's definition.
public getDefinition ( string $objectKey ) : Object | null
$objectKey string `Core\Language` or `Core.Language`.
return Jarves\Configuration\Object | null
    public function getDefinition($objectKey)
    {
        $objectKey = Objects::normalizeObjectKey($objectKey);
        $temp = explode('/', $objectKey);
        if (2 !== count($temp)) {
            return null;
        }
        $bundleName = $temp[0];
        $name = $temp[1];
        $config = $this->jarves->getConfig($bundleName);
        return $config ? $config->getObject($name) : null;
    }

Usage Example

Example #1
0
 /**
  * @ApiDoc(
  *  section="Bundle Editor",
  *  description="Saves the php class definition into a php class"
  * )
  *
  * Target path is specified in $general['file'].
  *
  * @Rest\QueryParam(name="class", requirements=".*", strict=true, description="The PHP class name")
  * @Rest\RequestParam(name="list", strict=false, description="The `list` value array")
  * @Rest\RequestParam(name="add", strict=false, description="The `add` value array")
  * @Rest\RequestParam(name="general", strict=false, description="The `general` value array")
  * @Rest\RequestParam(name="methods", strict=false, description="The `methods` value array")
  * @Rest\RequestParam(name="fields", strict=false, description="The `fields` value array")
  *
  * @Rest\Post("/admin/system/bundle/editor/window")
  *
  * @param ParamFetcher $paramFetcher
  *
  * @return bool
  */
 public function setWindowDefinitionAction(ParamFetcher $paramFetcher)
 {
     $class = $paramFetcher->get('class');
     $list = $paramFetcher->get('list') ?: null;
     $add = $paramFetcher->get('add') ?: null;
     $general = $paramFetcher->get('general') ?: null;
     $methods = $paramFetcher->get('methods') ?: null;
     $fields = $paramFetcher->get('fields') ?: null;
     if (substr($class, 0, 1) != '\\') {
         $class = '\\' . $class;
     }
     $path = $general['file'];
     $sourcecode = "<?php\n\n";
     $lSlash = strrpos($class, '\\');
     $class2Name = $lSlash !== -1 ? substr($class, $lSlash + 1) : $class;
     $parentClass = '\\Jarves\\Controller\\ObjectCrudController';
     $objectDefinition = $this->objects->getDefinition($general['object']);
     if ($objectDefinition->isNested()) {
         $parentClass = '\\Jarves\\Controller\\NestedObjectCrudController';
     }
     $namespace = substr(substr($class, 1), 0, $lSlash);
     if (substr($namespace, -1) == '\\') {
         $namespace = substr($namespace, 0, -1);
     }
     $sourcecode .= "namespace {$namespace};\n \n";
     $sourcecode .= 'class ' . $class2Name . ' extends ' . $parentClass . " {\n\n";
     if (count($fields) > 0) {
         $this->addVar($sourcecode, 'fields', $fields);
     }
     if (is_array($list)) {
         foreach ($list as $listVarName => $listVar) {
             $this->addVar($sourcecode, $listVarName, $listVar);
         }
     }
     if (is_array($add)) {
         foreach ($add as $varName => $var) {
             $this->addVar($sourcecode, $varName, $var);
         }
     }
     $blacklist = array('class', 'file');
     if (is_array($general)) {
         foreach ($general as $varName => $var) {
             if (array_search($varName, $blacklist) !== false) {
                 continue;
             }
             $this->addVar($sourcecode, $varName, $var);
         }
     }
     if (is_array($methods)) {
         foreach ($methods as $name => $source) {
             $this->addMethod($sourcecode, $source);
         }
     }
     $sourcecode .= "\n}\n";
     $sourcecode = str_replace("\r", '', $sourcecode);
     $fs = $this->localFilesystem;
     $result = $fs->write($path, $sourcecode);
     $this->reconfigureJarves();
     return $result;
 }
All Usage Examples Of Jarves\Objects::getDefinition