yiisoft / yii2

Yii 2: The Fast, Secure and Professional PHP Framework
http://www.yiiframework.com
BSD 3-Clause "New" or "Revised" License
14.24k stars 6.91k forks source link

Null data when call createItem() in DB RBAC #2051

Closed ShNURoK42 closed 10 years ago

ShNURoK42 commented 10 years ago

Hi.

I think we need change this code https://github.com/yiisoft/yii2/blob/master/framework/rbac/DbManager.php#L452 to like this

'data' => $data ? serialize($data) : null,

becouse, if we didn't set $data value in createItem() the 'data' in array equally "N;" and it value write to DB. Sorry for my bad Eng.

qiangxue commented 10 years ago

Thanks!

ShNURoK42 commented 10 years ago

Thx you too. I found else code with this issue there https://github.com/yiisoft/yii2/blob/master/framework/rbac/DbManager.php#L254 I think that all.

creocoder commented 10 years ago

@qiangxue Any reason to do that fix? Serializing null lead us to not do excess checks when unserializing. All was fine here. Vote to rollback this change.

ShNURoK42 commented 10 years ago

@creocoder вы думаете это хорошо, когда поля заполняются "мусором"? Архитектура таблицы подразумевает по дефолту ставить null. Что будет, если вручную вставить в такую таблицу данные? Те же excess checks.

creocoder commented 10 years ago

@ShNURoK42 Не надо вручную ничего вставлять и всё будет ОК. Результат сериализации null это не мусор. Засчет этого фикса усложняется логика компонента, при этом ничего в замен мы не получаем. Вывод: фикс надо откатывать. Вы уже нашли даже ещё одно место, которое надо фиксить, если идти по этому пути.

Архитектура таблицы подразумевает по дефолту ставить null.

Ничего страшного, схему таблицы фикснуть не сложно.

qiangxue commented 10 years ago

More fixes: https://github.com/yiisoft/yii2/commit/75ee05b90efa0f379c9e8df1285c244187d12b25

@creocoder This is an optimization worth doing: