Tuesday 5 December 2017

PHP, Parse error: syntax error, unexpected T_IF, expecting T_FUNCTION

itemprop="text">


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



I received this error while
trying to run the cls_FillInTheBlank.php which includes cls_template.php. I have the two
files posted at the for
review.



cls_FillInTheBlank.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(" id='[qInputId]' value='[qInputValue]' />");

$cls_blankInput->fillPlaceholderStrings(array("[qInputName]","[qInputId]","[qInputValue]"));

} else {
print("\$cls_blankInput not defined.
");

}

if(class_exists($cls_questionString)){

$cls_questionString->fillString(""); // to be set later

$cls_questionString->fillPlaceholderStrings(array("[fib_blank]"));
} else
{

print("\$cls_questionString not defined. />");
}


if(class_exists($cls_fillInTheBlank)){

$cls_fillInTheBlank->fillString("
  • [qFillInTheBlankString]
  • ");

    $cls_fillInTheBlank->fillPlaceholderStrings(array("[qFillInTheBlankString]"));

    } else {
    print("\$cls_fillInTheBlank not defined.
    ");

    }


    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;



    }

    }

    ?>


    Answer




    You've basically got
    this:



    class fillintheblank
    {

    if (...) {
    }
    if (...) {

    }
    }


    That's
    not permitted. A class definition has member variables and method definitions (ie:
    functions). You can't put "naked" PHP code in a class definition. YOu'll have to wrap it
    in a method, probably a constructor.


    No comments:

    Post a Comment

    php - file_get_contents shows unexpected output while reading a file

    I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...