从抽象父类中取消设置子对象静态变量php
问题描述:
我正在使用Laravel及其验证器。从抽象父类中取消设置子对象静态变量php
我在我的控制器下面的代码:
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;
}
}
在ResellerController
static::$rules[$key]
的不安定不窝RK。
我可以在的XDebug会议(此行被执行之后)看到static::$rules['company']
仍然存在于UserCreateValidator
财产。
我以为后期静态绑定应该解决这个问题吗? 有什么不对?
答
问题已解决。这是在注释的部分:
if(!array_key_exists($ruleKey, static::$rules)) //return false;
的解封工作正常,我取消了return false
后。
愚蠢的错误:)
只是为了测试......如果你在'UserCreateValidator'中放置'removeRule'函数,它会起作用吗? – lukasgeiter 2014-12-03 12:11:02