天天看點

用python處理購物籃資料_購物籃分析與運用-Python資料科學技術詳解與商業項目實戰精講 - Python學習網...

購物籃分析與運用購物籃分析與運用

屬性定義

屬性定義方式僅限于驗證器,通常類似于下面的方式:<?php

namespace app\validate;

use think\Validate;

class User extends Validate

{

protected $rule = [

'name'  => 'require|max:25',

'age'   => 'number|between:1,120',

'email' => 'email',

];

}

系統内置了一些常用的驗證規則可以滿足大部分的驗證需求,具體每個規則的含義參考内置規則一節。

因為一個字段可以使用多個驗證規則(如上面的age字段定義了number和between兩個驗證規則),在一些特殊的情況下,為了避免混淆可以在rule屬性中使用數組定義規則。<?php

namespace app\validate;

use think\Validate;

class User extends Validate

{

protected $rule = [

'name'  => ['require', 'max' => 25, 'regex' => '/^[\w|\d]\w+/'],

'age'   => ['number', 'between' => '1,120'],

'email' => 'email',

];

}

方法定義

如果使用的是獨立驗證(即手動調用驗證類進行驗證)方式的話,通常使用rule方法進行驗證規則的設定,舉例說明如下。獨立驗證通常使用Facade或者自己執行個體化驗證類。$validate = \think\facade\Validate::rule('age', 'number|between:1,120')

->rule([

'name'  => 'require|max:25',

'email' => 'email'

]);

$data = [

'name'  => 'thinkphp',

'email' => '[email protected]'

];

if (!$validate->check($data)) {

dump($validate->getError());

}

rule方法傳入數組表示批量設定規則。

rule方法還可以支援使用對象化的規則定義。

我們把上面的驗證代碼改為use think\facade\Validate;

use think\validate\ValidateRule as Rule;

$validate = Validate::rule('age', Rule::isNumber()->between([1,120]))

->rule([

'name'  => Rule::isRequire()->max(25),

'email' => Rule::isEmail(),

]);

$data = [

'name'  => 'thinkphp',

'email' => '[email protected]'

];

if (!$validate->check($data)) {

dump($validate->getError());

}

可以對某個字段使用閉包驗證,例如:$validate = Validate::rule([

'name'  => function($value) {

return 'thinkphp' == strtolower($value) ? true : false;

},

]);

閉包支援傳入兩個參數,第一個參數是目前字段的值(必須),第二個參數是所有資料(可選)。

如果使用了閉包進行驗證,則不再支援對該字段使用多個驗證規則。

閉包函數如果傳回true則表示驗證通過,傳回false表示驗證失敗并使用系統的錯誤資訊,如果傳回字元串,則表示驗證失敗并且以傳回值作為錯誤提示資訊。$validate = Validate::rule([

'name'  => function($value) {

return 'thinkphp' == strtolower($value) ? true : '使用者名錯誤';

},

]);

屬性方式定義驗證規則不支援使用對象化規則定義和閉包定義

任務

?不會了怎麼辦