Разберём следующий кейс.
Разрабатываем мы на своём любимом похапэ некую систему и используем при этом некую библиотеку.
Пускай, например, это будет вот эта поделка для работы с базой данных.
И вот мы вызываем какой-то метод в нашей системе, тот вызывает ещё какой-то и так далее.
И, в конце концов, где-то мы обращаемся к вышеозначенной библиотеке:
$db->query('SELECT * FROM `test` WHERE `id`=?i')->el(); |
Запрос составили, в каком формате результат вернуть указали, куда данные вставлять с помощью плейсхолдера указали, а вот сами данные для этого плейсхолдера не предоставили.
Запамятовали в пылу разработки.
И вот, вызванный нами, метод query()
начинает обращаться к каким-то другим классам библиотеки, те к следующим и так далее, всё как обычно.
В какой-то момент доходит дело до того, чтобы данные в запрос на нужные места вставлять и тут выясняется, что данных нет никаких. Ну и, ясное дело, всё валится с исключением:
go\DB\Exceptions\DataNotEnough: Data elements (0) less than the placeholders in /test/my/db/Helpers/Templater.php on line 126 Call Stack: 1. {main}() /test/my/index.php:0 2. callMyClass() /test/my/index.php:14 3. MyClass->method() /test/my/index.php:11 4. MyClass->selectDB() /test/my/MyClass.php:7 5. go\DB\DB->query() /test/my/MyClass.php:20 6. go\DB\DB->makeQuery() /test/my/db/DB.php:92 7. go\DB\Helpers\Templater->parse() /test/my/db/DB.php:312 8. preg_replace_callback() /test/my/db/Helpers/Templater.php:57 9. go\DB\Helpers\Templater->placeholderClb() /test/my/db/Helpers/Templater.php:57 |
Смотрим мы печальными глазами на этот вывод и читаем сообщение, ага, забыли данных накидать.
А вот где именно это случилось, хрен поймёшь.
Исключение указывает на точку, где его выбросили, то есть глубоко в недрах библиотеки и делать нам там нечего.
Нам нужна та точка, где мы в эту библиотеку с невалидными данными вошли.