PHP, Análise de erro:erro de sintaxe, inesperado T_IF, esperando T_FUNCTION

StackOverflow https://stackoverflow.com/questions/5440036

  •  12-11-2019
  •  | 
  •  

Pergunta

Parse error: syntax error, unexpected T_IF, expecting T_FUNCTION in C:\wamp\www\Exam Creator\cls_FillInTheBlank.php on line 31

Recebi este erro ao tentar executar o cls_FillInTheBlank.php o que inclui cls_template.php.Eu tenho os dois arquivos postados no para revisão.

cls_FillInTheBlank.php

<?php

    include("cls_template.php");

class fillintheblank{

    function _construct(){
        $cls_blankInput = new template;
        $cls_questionString = new template;
        $cls_fillInTheBlank = new template;
    }

    if(class_exists($cls_blankInput)){
        $cls_blankInput->fillString("<input type='text' name='[qInputName]' id='[qInputId]' value='[qInputValue]' />");
        $cls_blankInput->fillPlaceholderStrings(array("[qInputName]","[qInputId]","[qInputValue]"));
    } else {
        print("\$cls_blankInput not defined.<br>");
    }

    if(class_exists($cls_questionString)){
        $cls_questionString->fillString("");    // to be set later
        $cls_questionString->fillPlaceholderStrings(array("[fib_blank]"));
    } else {
        print("\$cls_questionString not defined.<br>");
    }

    if(class_exists($cls_fillInTheBlank)){
        $cls_fillInTheBlank->fillString("<li>[qFillInTheBlankString]</li>");
        $cls_fillInTheBlank->fillPlaceholderStrings(array("[qFillInTheBlankString]"));
    } else {
        print("\$cls_fillInTheBlank not defined.<br>");
    }

    public function q_fib_buildString($cls_question){
        $i_qID = "";            // @type INTEGER
        $s_html = "";           // @type STRING
        $a_inputs = "";         // @type ARRAY
        $s_innerHTML = "";      // @type STRING
        $s_outerHTML = "";      // @type STRING

        $i_qID = $cls_question->qo_i_id;

        // build the HTML for the blank input
        foreach($cls_question->qo_a_answerSet as $answer){
            $this->cls_blankInput->fillPlaceholderValues(array("qID_".$i_qID,"qID_".$i_qID,$answer["value"]));
            $a_inputs[count($a_inputs)] = $this->cls_blankInput->buildTemplate();
        }

        // build the inner HTML
        $this->cls_questionString->fillString($cls_question->qo_s_string);
        $this->cls_questionString->fillPlaceholderValues($a_inputs);
        $s_innerHTML = $this->cls_blankInput->buildTemplate();


        // build the outer HTML
        $this->cls_fillInTheBlank->fillPlaceholderValues($s_innerHTML);
        $outerHTML =  $this->cls_fillInTheBlank->buildTemplate();

        return $outerHTML;

    }

    public function q_fib_buildString($s_template){
        $s_fib_patterns = array();
        $s_input_blank = "";
        $s_fib_patterns_blank = "[\[fib_blank\]]";

        // array of placeholders 
        $a_fib_patterns['input'] = array();
            // place holder for the name attribute of the input tag
            $a_fib_patterns['attribute']['name'] ="[\[qInputName\]]";
            // place holder for the id attribute of the input tag
            $a_fib_patterns['attribute']['id'] = "[\[qInputId\]]";

        // array of values
        $a_fib_replace['value'] = array();
            // value for the name attribute
            $a_fib_replace['value']['name'] = "qId_".$i_id."[]";
            // value fo the id attribute
            $a_fib_replace['value']['id'] = "qId_".$i_id."[]";

        // build blank input
        $s_input_blank = preg_replace($a_fib_patterns['input'],$a_fib_replace['value'],fillintheblank::$s_blankInput);
        // build question string
        $s_string = preg_replace($s_fib_patterns_blank,$s_input_blank,$s_string);

        /* START CODE FOR TESTING */
//      echo($s_input_blank);   // echo code for the blank inputs
        /* END CODE FOR TESTING */

        // return question string
        return $s_string;

    }

}

?>
Foi útil?

Solução

Você basicamente tem esse:

class fillintheblank {
   if (...) {
   }
   if (...) {
   }
}

Isso não é permitido.Uma definição de classe tem variáveis de membro e definições de método (ou seja:funções).Você não pode colocar "nu" código PHP em uma definição de classe.Você vai ter que envolvê-la em um método, provavelmente, um construtor.

Outras dicas

O seu problema é que você começou uma classe, mas, em seguida, você começou a escrever o que normalmente seriam encontradas em função de um corpo.Você precisa delimitar linhas 27-56 em uma definição de função.

Também, unrelatedly, com o nome de um método _construct quando você provavelmente significava __construct.Dois sublinhados, não apenas um.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top