ems / xtype
PHP的语义类型
v0.3.1
2024-09-18 09:42 UTC
Requires
- php: >=8.2.0
Requires (Dev)
- phpunit/phpunit: 11.1.2
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质量。类没有做很多事情,所以使用它并不危险。所以目前没有文档。