ems/xtype

PHP的语义类型

v0.3.1 2024-09-18 09:42 UTC

This package is auto-updated.

Last update: 2024-09-18 09:44:07 UTC


README

PHP的语义原子类型

用法

XType对数据类型进行分类。它们主要用于构建表单和集中化字符串格式化。

而不是说

echo number_format($myObject->price,2,'.');

使用xtype,您可以编写

class MyObject{

    public $price;
    
    public function getType(){
        return NamedFieldType::create()
           ->set('price', UnitType::create()->setUnit('$')->setDecimals(2));
    }
}

// Then in you're view:

$myObject = new MyObject();
echo $myObject->getType('price')->valueToString($myObject->price);

在这种情况下看起来非常笨拙,但在大型应用程序或以大数据为中心的应用程序中,它展示了其强大的功能。想象您有一个customer类

   class Customer{
   
       public $id;
       public $doubts;
       public $lastLogin;
       public $taxes;
       
       public function getType(){
           $type = NamedField::create();
           $type->set('id', NumberType::create()->setNativeType('int'))
           $type->set('doubts', CurrencyType::create()->setCurrency(''));
           $type->set('lastLogin', TemporalType::create();
           $type->set('taxes', PercentageType::create());
           return $type;
       }
   }
   
   $c = new Customer();
   
   foreach($c->getType() as $key=>$type){
       echo "\n$key=>".$type->valueToString($c->{$key});
   }

并且您可以在应用程序的每个部分都忽略任何字符串格式化。但xtype不仅仅用于字符串格式化。(我知道SOLID...)

它还非常有助于描述类型。因此,您可以构建一个xtype的数据库模式。

另一个可能性是使用xtype构建表单。

工厂

要简单地创建一个XType,您可以使用XType\TemplateFactory::create($native),它通过原生PHP变量创建一个AbstractType。

注意

此库处于beta质量。类没有做很多事情,所以使用它并不危险。所以目前没有文档。