vitallyspirin / simplephpactiverecord
PHP ActiveRecord 扩展,增加了自动生成的验证器
1.0.1
2016-08-17 20:39 UTC
Requires
- php: >=5.4.0
- php-activerecord/php-activerecord: ^1.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^1.11
- phpunit/phpunit: 4.8.*
This package is not auto-updated.
Last update: 2024-09-14 20:20:08 UTC
README
PHP ActiveRecord (phpactiverecord.org) 扩展,包括自动生成的验证器。
安装
composer require vitalyspirin/simplephpactiverecord
快速开始
class T1 extends \vitalyspirin\simplephpactiverecord\SimpleActiveRecord { public static $validates_presence_of = []; public static $validates_size_of = []; public static $validates_numericality_of = []; public static $validates_uniqueness_of = []; public static $validates_inclusion_of = []; public static $validates_format_of = []; }
不需要硬编码验证器,因为它们将由类构造函数根据表结构自动添加。然而,当前版本中,基于外键的关系将不会添加。
静态属性(验证器)必须添加到每个扩展 SimpleActiveRecord 类的子模型中,因为在 PHP 中无法动态创建静态属性。
此类实例的创建方式如下
$t1 = new T1();
如果表结构发生变化,验证器将自动调整。
示例
假设我们有以下 SQL 架构
CREATE TABLE person ( person_id INT PRIMARY KEY AUTO_INCREMENT, person_firstname VARCHAR(35) NOT NULL, person_lastname VARCHAR(35) NOT NULL, person_gender ENUM('male', 'female'), person_dob DATE NULL, person_salary DECIMAL UNSIGNED );
然后,如果我们运行以下代码
class Person extends \vitalyspirin\simplephpactiverecord\SimpleActiveRecord { static $table_name = 'person'; public static $validates_presence_of = []; public static $validates_size_of = []; public static $validates_numericality_of = []; public static $validates_uniqueness_of = []; public static $validates_inclusion_of = []; public static $validates_format_of = []; } $person = new Person(); echo "validates_presence_of:"; var_dump($person::$validates_presence_of); echo "validates_size_of:"; var_dump($person::$validates_size_of); echo "validates_numericality_of:"; var_dump($person::$validates_numericality_of); echo "validates_inclusion_of:"; var_dump($person::$validates_inclusion_of);
我们将得到以下输出
validates_presence_of:array(2) {
[0] =>
array(1) {
[0] =>
string(16) "person_firstname"
}
[1] =>
array(1) {
[0] =>
string(15) "person_lastname"
}
}
validates_size_of:array(2) {
[0] =>
array(2) {
[0] =>
string(16) "person_firstname"
'maximum' =>
int(35)
}
[1] =>
array(2) {
[0] =>
string(15) "person_lastname"
'maximum' =>
int(35)
}
}
validates_numericality_of:array(1) {
[0] =>
array(3) {
[0] =>
string(13) "person_salary"
'greater_than_or_equal_to' =>
int(0)
'allow_null' =>
bool(true)
}
}
validates_inclusion_of:array(1) {
[0] =>
array(3) {
[0] =>
string(13) "person_gender"
'in' =>
array(2) {
[0] =>
string(4) "male"
[1] =>
string(6) "female"
}
'allow_null' =>
bool(true)
}
}
你还可以在 SimpleActiveRecordTest.php 中查看简单的示例测试。