2010-01-22 55 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

我有同样的问题,然后我发现我班的大括号“{”失踪了。