1
0
mirror of https://github.com/dg/dibi.git synced 2025-08-27 15:59:49 +02:00

DibiRow: shows suggestions for missing columns

This commit is contained in:
David Grudl
2015-10-06 13:23:46 +02:00
parent a119921832
commit 80e2fd6cc3
2 changed files with 19 additions and 2 deletions

View File

@@ -47,6 +47,13 @@ class DibiRow implements ArrayAccess, IteratorAggregate, Countable
}
public function __get($key)
{
$hint = DibiHelpers::getSuggestion(array_keys((array) $this), $key);
trigger_error("Attempt to read missing column '$key'" . ($hint ? ", did you mean '$hint'?" : '.'), E_USER_NOTICE);
}
/********************* interfaces ArrayAccess, Countable & IteratorAggregate ****************d*g**/

View File

@@ -24,16 +24,26 @@ Assert::true(isset($row['title']));
// missing
Assert::error(function () use ($row) {
$x = $row->missing;
}, E_NOTICE, 'Undefined property: DibiRow::$missing');
}, E_USER_NOTICE, "Attempt to read missing column 'missing'.");
Assert::error(function () use ($row) {
$x = $row['missing'];
}, E_NOTICE, 'Undefined property: DibiRow::$missing');
}, E_USER_NOTICE, "Attempt to read missing column 'missing'.");
Assert::false(isset($row->missing));
Assert::false(isset($row['missing']));
// suggestions
Assert::error(function () use ($row) {
$x = $row->tilte;
}, E_USER_NOTICE, "Attempt to read missing column 'tilte', did you mean 'title'?");
Assert::error(function () use ($row) {
$x = $row['tilte'];
}, E_USER_NOTICE, "Attempt to read missing column 'tilte', did you mean 'title'?");
// to array
Assert::same(['product_id' => 1, 'title' => 'Chair'], iterator_to_array($row));
Assert::same(['product_id' => 1, 'title' => 'Chair'], $row->toArray());