(более общий вариант Предупреждение: mysql_fetch_array () ожидает, что параметр 1 будет resource, boolean given )
Ресурсы - это тип в PHP (например, строки, целые числа или объекты). Ресурс является непрозрачным блобом без собственной значимой ценности. Ресурс специфичен и определен определенным набором функций или расширений PHP. Например, расширение Mysql определяет два типа ресурсов :
В модуле MySQL есть два типа ресурсов. Первый - идентификатор ссылки для подключения к базе данных, второй - ресурс, который содержит результат запроса.
Расширение cURL определяет другой два типа ресурсов :
... дескриптор cURL и мультирум cURL.
Когда
var_dump
ed значения выглядят так:$resource = curl_init(); var_dump($resource); resource(1) of type (curl)
Это все большинство ресурсов - это числовой идентификатор (
(1)
) определенного типа ((curl)
).Вы переносите эти ресурсы и передаете их различным функциям, для которых такой ресурс что-то значит. Обычно эти функции выделяют определенные данные в фоновом режиме, а ресурс - это просто ссылка, которую они используют для отслеживания этих данных внутри.
«... ожидает, что параметр 1 будет ресурсом, логическим данная "ошибка, как правило, является результатом непроверенной операции, которая должна была создать ресурс, но вместо этого вернула
false
. Например, функцияfopen
имеет это описание:Возвращаемые значения
Возвращает ресурс указателя файла при успешном выполнении или
FALSE
Таким образом, в этом коде
$fp
будет либоresource(x) of type (stream)
, либоfalse
:$fp = fopen(...);
Если вы не операция
fopen
будет успешной или неудачной и, следовательно, будет ли$fp
действительным ресурсом илиfalse
и передать$fp
другой функции, которая ожидает ресурс, вы можете получить вышеуказанную ошибку:$fp = fopen(...); $data = fread($fp, 1024); Warning: fread() expects parameter 1 to be resource, boolean given
Вам всегда нужно проверять возвращаемое значение функций, которые пытаются выделить ресурс , и может выйти из строя :
$fp = fopen(...); if (!$fp) { trigger_error('Failed to allocate resource'); exit; } $data = fread($fp, 1024);
Связанные ошибки:
Я не думаю, что действительно существует 'победитель'. Другие платформы включают SpecUnit.NET проект и , MSpec также показывает обещание с началом Галлио адаптер. Технически, так как IronRuby находится на горизонте, , rSpec может быть опцией для готовых пойти новейший. NBehave + NSpec мог бы быть старшей платформой с лучшей автоматизацией, хотя я боролся против чрезмерно подробного синтаксиса.
я проверил бы их всех и выбрал бы платформу, которая удовлетворяет Вашему стилю проектов лучше всего. Они - все OSS, таким образом, его твердое для потери реальная выгода находится просто в перемещении в BDD.
Существует также Привидение , который определяет DSL в Шиканье для создания всего этого более естественным.
Я обычно шел бы в пользу NBehave, объединенного с MbUnit и какой бы ни платформы DI/насмешки Вам нужно. Это - справедливый комментарий Jim Burger, что NBehave является очень подробным, и я время от времени использую вырезание и вклейку. Однако, это работает отлично - я использую плагин ReSharper Галлио, таким образом, я просто получаю дополнительный показ окна. Еще не попробовали его ccnet, все же.
Проверьте это сообщение в блоге и его комментарии для вдохновляющих идей: http://haacked.com/archive/2008/08/23/introducing-subspec.aspx/
Check out SpecFlow.
It is a tool inspired by Cucumber that aims at providing a pragmatic and frictionless approach to Acceptance Test Driven Development and Behavior Driven Development for .NET projects today.
VisualStudio integration seems especially promising.
StoryQ выглядит как хорошая альтернатива NBehave с его интерфейсом Fluent. Я бы определенно проверил его.