[英]Unset child object static variable from abstract parent class php
我正在使用Laravel及其驗證程序。
我的控制器中有以下代碼:
class ResellerController extends BaseController{
public function add() {
//some code before
$userValidator = new App\Services\Validators\UserCreateValidator();
//HERE I WANT TO REMOVE THE company KEY FROM THE RULES IN THE USERS CREATE VALIDATOR
$userValidator->removeRule('company');
//code execution continues
}
}
UserCreateValidator擴展了父Validator類:
namespace App\Services\Validators;
class UserCreateValidator extends Validator {
public static $rules = array(
'firstName' => 'required',
'lastName' => 'required',
'email' => 'required|email|unique:users',
'company' => 'required'
);
}
這是基本的Validator類:
namespace App\Services\Validators;
abstract class Validator {
/**
* Validation rules
* @var array
*/
public static $rules;
//THIS CODE DOES NOT WORK IN THE CONTROLLER UP
public static function removeRule($ruleKey){
if(is_array($ruleKey))
{
foreach($ruleKey as $key)
{
if(!array_key_exists($key, static::$rules)) continue;
unset(static::$rules[$key]);
}
return true;
}
if(!array_key_exists($ruleKey, static::$rules)) //return false;
unset(static::$rules['company']);
return true;
}
}
的的unsettting static::$rules[$key]
在ResellerController
不起作用。
我可以在XDEBUG會話(執行此行之后)中看到, static::$rules['company']
仍作為屬性存在於UserCreateValidator
中。
我認為后期靜態綁定應該可以解決此問題? 怎么了?
問題已經解決了。 它在以下內容的評論部分:
if(!array_key_exists($ruleKey, static::$rules)) //return false;
我取消注釋return false
后,unsetting正常工作。
愚蠢的錯誤:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.