{"record":{"id":"fb6fed8819ee7b39","repo":"phalcon/cphalcon","slug":"the-messages-must-be-iterable","errorCode":null,"errorMessage":"The messages must be iterable","messagePattern":"The messages must be iterable","errorType":"exception","errorClass":"Phalcon\\Messages\\Exceptions\\MessagesNotIterable","httpStatus":null,"severity":"error","filePath":"phalcon/Messages/Messages.zep","lineNumber":85,"sourceCode":"     * $messages->appendMessages($messagesArray);\n     *```\n     *\n     * Accepts an array of MessageInterface objects or an Iterator yielding\n     * them. The parameter stays untyped so that a non-iterable argument\n     * reaches the guard below and raises MessagesNotIterable rather than a\n     * TypeError.\n     *\n     * @param mixed $messages\n     *\n     * @return void\n     * @throws MessagesNotIterable\n     */\n    public function appendMessages(var messages)\n    {\n        var currentMessages, finalMessages, message;\n\n        if typeof messages !== \"array\" && !(typeof messages === \"object\" && messages instanceof Traversable) {\n            throw new MessagesNotIterable();\n        }\n\n        let currentMessages = this->messages;\n\n        if typeof messages == \"array\" {\n            /**\n             * An array of messages is simply merged into the current one\n             */\n            let finalMessages = array_merge(currentMessages, messages);\n\n            let this->messages = finalMessages;\n        } else {\n            /**\n             * A collection of messages is iterated and appended one-by-one to\n             * the current list\n             */\n            messages->rewind();\n","sourceCodeStart":67,"sourceCodeEnd":103,"githubUrl":"https://github.com/phalcon/cphalcon/blob/b7419de9cd0a8a3f48441ead84c9f8415d463e25/phalcon/Messages/Messages.zep#L67-L103","documentation":"Error \"The messages must be iterable\" thrown in phalcon/cphalcon.","triggerScenarios":"Thrown at phalcon/Messages/Messages.zep:85 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b7419de9cd0a8a3f48441ead84c9f8415d463e25","analyzedAt":"2026-08-21T06:21:18.811Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}