NerdsAndCompany\Schematic\Models\FieldFactory::build PHP Method

build() public method

public build ( $fieldType ) : Field
$fieldType
return Field
    public function build($fieldType)
    {
        $fieldModel = new Field();
        $classNames = [];
        $customFieldMappings = $this->getPluginsService()->call('registerSchematicFieldModels');
        foreach ($customFieldMappings as $mappings) {
            if (array_key_exists($fieldType, $mappings)) {
                $classNames[] = $mappings[$fieldType];
            }
        }
        $classNames[] = 'NerdsAndCompany\\Schematic\\Models\\' . ucfirst($fieldType) . 'Field';
        foreach ($classNames as $className) {
            if (class_exists($className)) {
                $tmpFieldModel = new $className();
                if ($tmpFieldModel instanceof Field) {
                    $fieldModel = $tmpFieldModel;
                    break;
                }
            }
        }
        return $fieldModel;
    }

Usage Example

Esempio n. 1
0
 /**
  * @covers ::build
  * @dataProvider provideHookedFieldTypes
  *
  * @param string $fieldType
  * @param string $expectedClassName
  * @param array  $hookCallResults
  */
 public function testBuildWithFieldHook($fieldType, $expectedClassName, array $hookCallResults)
 {
     $this->setMockPluginsService($hookCallResults);
     $fieldFactory = new FieldFactory();
     $schematicFieldModel = $fieldFactory->build($fieldType);
     $this->assertInstanceOf($expectedClassName, $schematicFieldModel);
 }