Пример #1
0
 protected function add($fieldType, $fieldName, $fieldDescription) : Field
 {
     // 为避免人肉拼接namespace, 所以写了下面一坨
     $field = class_namespace(Text::class, $fieldType);
     lego_assert(class_exists($field), 'Undefined Field ' . $field);
     /** @var Field $field */
     $field = new $field($fieldName, $fieldDescription, $this->data());
     $this->fields[$fieldName] = $field;
     $this->fieldAdded($field);
     return $field;
 }
Пример #2
0
 private static function internalFields()
 {
     static $fields = [];
     if ($fields) {
         return $fields;
     }
     foreach (scandir(__DIR__ . '/../../Field/Provider/') as $file) {
         if (!ends_with($file, '.php')) {
             continue;
         }
         $name = explode('.php', $file)[0];
         $fields[$name] = class_namespace(Text::class, $name);
     }
     return $fields;
 }
Пример #3
0
 /**
  * key 转换为 RegisterData 类
  *
  * - field.data => \Lego\Register\Data\FieldData
  * - \Lego\Register\Data\FieldData => \Lego\Register\Data\FieldData
  *
  * @param $key
  * @return mixed|string
  */
 private static function translateClass($key)
 {
     if (is_subclass_of($key, RegisterData::class)) {
         return $key;
     }
     static $cache = [];
     // 避免多次进行父类判定
     if (isset($cache[$key])) {
         return $cache[$key];
     }
     // abc.def.ghi => AbcDefGhi
     $classBaseName = ucfirst(camel_case(str_replace('.', '_', $key)));
     $class = class_namespace(RegisterData::class, $classBaseName);
     lego_assert(is_subclass_of($class, RegisterData::class), "Unsupported Register data {$class}(key: {$key})");
     $cache[$key] = $class;
     return $class;
 }
Пример #4
0
 /**
  * 取出参数类的命名空间
  *
  * @dataProvider classNamespaceProvider
  */
 public function testClassNamespace($class, $namespace, $append = null, $afterAppend = null)
 {
     $this->assertEquals($namespace, class_namespace($class));
 }