Parse error: syntax error, unexpected T_IF, expecting T_FUNCTION in C:\wamp\www\Exam Creator\cls_FillInTheBlank.php on line 31
解析错误:语法错误,意外的T_IF,期望T_FUNCTION在C:\wamp\www\考试主创\cls_FillInTheBlank。php在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包括cls_template.php。我已经把这两个文件贴在了审查处。
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;
}
}
?>
2 个解决方案
#1
5
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.
这是不允许的。类定义有成员变量和方法定义(即:函数)。您不能在类定义中放入“裸”PHP代码。您将不得不将它封装在一个方法中,可能是一个构造函数。
#2
0
Your problem is you started a class, but then you started writing what would usually be found in a function body in it. You need to enclose lines 27-56 in a function definition.
你的问题是你开始了一个类,然后你开始写通常在函数体中找到的东西。您需要在函数定义中包含第27-56行。
Also, unrelatedly, you named a method _construct
when you probably meant __construct
. Two underscores, not just one.
而且,当您可能意味着__construct时,您会毫不犹豫地命名一个方法_construct。两个下划线,而不是一个。
#1
5
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.
这是不允许的。类定义有成员变量和方法定义(即:函数)。您不能在类定义中放入“裸”PHP代码。您将不得不将它封装在一个方法中,可能是一个构造函数。
#2
0
Your problem is you started a class, but then you started writing what would usually be found in a function body in it. You need to enclose lines 27-56 in a function definition.
你的问题是你开始了一个类,然后你开始写通常在函数体中找到的东西。您需要在函数定义中包含第27-56行。
Also, unrelatedly, you named a method _construct
when you probably meant __construct
. Two underscores, not just one.
而且,当您可能意味着__construct时,您会毫不犹豫地命名一个方法_construct。两个下划线,而不是一个。