Simple PHP error: syntax error, unfinished class declaration
I get two errors and I dont know how to fix this.
I get the error "syntax error, unfinished class declaration" at the line:
private $language;
I get "syntax error, unexpected 'public', expecting 'EOF'" at the line:
public function getCurrencies()
This is the whole code:
class Driver extends Driver{
public static $url = "http://www.com/";
/* The method of posting data to the website */
public static $method = "GET";
/* The part of the url extending the domain name until the search term */
public static $url_searchbase = "search/searchresults.aspx?N=0&Ntt=";
/* The part of the url entailing the search term, deifining additional paramters */
public static $url_searchtail = "&Ntk=Primary&i=0&sw=n&ps=9999&pn=1";
private $currency;
private $language;
/* Allowed currencies */
$currencies = array("USD", "CAD");
/* Allowed languages */
$languages = array("ENU");
function __construct($currency, $language){
if(setCurrency($currency) AND setLanguage($language)){
return TRUE;
} else {
trigger_error("Currency '". $currency ."' or Language '". $language ."' not supported.", E_USER_ERROR);
return FALSE;
}
}
/*
* Return an array of allowed currencies
*/
public function getCurrencies(){
return $currencies;
}
/*
* Set the currency
*/
function setCurrency($currency){
if(in_array($currency, $this->$currencies)
{
$this->$currency = $currency;
return TRUE;
} else {
trigger_error("Currency '". $currency ."' not supported.", E_USER_ERROR);
return FALSE;
}
}
/*
* Return an array of allowed languages
*/
public function getLanguages(){
return $languages;
}
/*
* Set the language
*/
public function setLanguage($language){
if(in_array($language, $this->$languages)
{
$this->$language = $language;
return TRUE;
} else {
trigg开发者_运维问答er_error("Language '". $language ."' not supported.", E_USER_ERROR);
return FALSE;
}
}
}
class Driver extends Driver
makes no sense. I think you got one of the names wrong.
Also, you cannot put real code outside of a function.
Move
/* Allowed currencies */
$currencies = array("USD", "CAD");
/* Allowed languages */
$languages = array("ENU");
into your __construct()
function and use $this->var
instead of $var
.
In if(in_array($currency, $this->$currencies)
there's missing a closing )
.
Same for if(in_array($language, $this->$languages)
You are also accessing the member vars in an incorrect way. You need to use $this->var
instead of $this->$var
which would access the member variable whose name is stored in $var
.
You had 4 errors:
- Your variables $currencies and $languages had no scope. You need to declare if they are public, private or protected.
- Your class extends itself, this is not possible, I think you need to remove the extends Driver line.
- You had missing closing brackets on your in_array functions (lines 39 and 60)
- You were missing a closing brace } for your Class. EDIT: This was caused when pasting the code in stackoverflow.
Fixed Code:
<?php
class Driver{
public static $url = "http://www.com/";
/* The method of posting data to the website */
public static $method = "GET";
/* The part of the url extending the domain name until the search term */
public static $url_searchbase = "search/searchresults.aspx?N=0&Ntt=";
/* The part of the url entailing the search term, deifining additional paramters */
public static $url_searchtail = "&Ntk=Primary&i=0&sw=n&ps=9999&pn=1";
private $currency;
private $language;
/* Allowed currencies */
public $currencies = array("USD", "CAD");
/* Allowed languages */
public $languages = array("ENU");
function __construct($currency, $language){
if(setCurrency($currency) AND setLanguage($language)){
return TRUE;
} else {
trigger_error("Currency '". $currency ."' or Language '". $language ."' not supported.", E_USER_ERROR);
return FALSE;
}
}
/*
* Return an array of allowed currencies
*/
public function getCurrencies(){
return $currencies;
}
/*
* Set the currency
*/
function setCurrency($currency){
if(in_array($currency, $this->$currencies))
{
$this->$currency = $currency;
return TRUE;
} else {
trigger_error("Currency '". $currency ."' not supported.", E_USER_ERROR);
return FALSE;
}
}
/*
* Return an array of allowed languages
*/
public function getLanguages(){
return $languages;
}
/*
* Set the language
*/
public function setLanguage($language){
if(in_array($language, $this->$languages))
{
$this->$language = $language;
return TRUE;
} else {
trigger_error("Language '". $language ."' not supported.", E_USER_ERROR);
return FALSE;
}
}
}
/*
* Set the currency
*/
function setCurrency($currency){
if(in_array($currency, $this->$currencies)
is missing a closing )
, and the same goes for setLanguage(..)
Also class Driver extends Driver
doesn't make any sense and should just be class Driver
There are a few mistakes:
You need to use
private
(or one of the other visibility options) for your$currencies
and$languages
class instance arrays.Your
setCurrency
andsetLanguage
methods are missing a closing parenthesis on the firstif(in_array(
line.
Also, are you intending to extend a class called driver with a class called driver? (I very much suspect you just want to use class Driver {
.)
精彩评论