2010-01-22 53 views
4

我得到這個錯誤...故障排除意外T_PUBLIC錯誤

Parse error:syntax error, unexpected T_PUBLIC in C:\filename here on line 12

在此行中....

public static function getInstance(){ 

代碼...

<?PHP 
class Session{ 

private static $instance; 

function __construct() { 
{ 
    session_start(); 
    echo 'Session object created<BR><BR>'; 
} 

public static function getInstance(){ 
    if (!self::$instance) { 
    self::$instance = new Session(); 
    } 
    return self::$instance; 
} 
} 
+0

當你有一個語法錯誤,仔細檢查所有的控制字符,如{,};等 – alex 2010-01-22 02:08:10

+0

我有這個錯誤,那是因爲我想聲明一個類的公共職能_outside_。當我在這個問題中看到代碼片段時,它幫助我意識到這一點。這個問題已經結束,但這個問題的最終答案是,除非是直接在一個班級中,否則一個成員不能被宣佈爲「公共」。在這個問題的情況下,額外的花括號引導解釋器將'getInstance'解釋爲在'__construct'函數中聲明的,這不是類。我想作爲一個答案在誰遇到這樣的語法錯誤消息以後添加此給他人。 – 2015-04-13 14:47:06

回答

9
<?PHP 
class Session{ 

    private static $instance; 

    function __construct() 
    { 
     session_start(); 
     echo 'Session object created<BR><BR>'; 
    } 

    public static function getInstance() 
    { 
     if (!self::$instance) { 
      self::$instance = new Session(); 
     } 
     return self::$instance; 
    } 
} 

試試看。你有一個額外的支架。

錯誤實際上是在該行function __construct()。它創建了一個函數,然後空集括號(實際上沒有錯誤)。

然後,你永遠不會最終擺脫構造函數,所以當你嘗試在函數內部使用公共參數時出錯,這是無效的語法。

這就是爲什麼我們要一致地放置支架,所以我們總是把東西放在同一個地方,因此可以很容易地發現錯誤放置。

+0

感謝我真的要瘋了像一個小時,現在這個樣子,它總是明顯的東西似乎 – JasonDavis 2010-01-22 01:56:00

2

換句話說,你有一個語法錯誤:

function __construct() { <-- note the extra open curly 
{ <-- note the extra open curly 
1

我有同樣的問題,然後我發現我班的大括號「{」失蹤了。