2016-07-09 2 views
-1

У меня есть вспомогательный класс, как это:Анализировать ошибка: синтаксическая ошибка, неожиданный «(»

class Helper{ 

    public static $app_url = self::getServerUrl(); 
    /** 
    * Gets server url path 
    */ 
    public static function getServerUrl(){ 
     global $cfg; // get variable cfg as global variable from config.php Modified by Gentle 

     $port = $_SERVER['SERVER_PORT']; 
     $http = "http"; 

     if($port == "80"){ 
      $port = ""; 
     } 

     if(!empty($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on"){ 
      $http = "https"; 
     } 
     if(empty($port)){ 
      return $http."://".$_SERVER['SERVER_NAME']."/".$cfg['afn']; 
     }else{ 
      return $http."://".$_SERVER['SERVER_NAME'].":".$port."/".$cfg['afn']; 
     }   
    } 
} 

и ее дал мне:

Parse error: syntax error, unexpected '(' on the line with public static $app_url = self::getServerUrl();

ответ

1

Ваша проблема заключается в том, что вы пытаетесь определить статическая переменная с собственной статической функцией. Поскольку вы никогда не создавали экземпляр класса (статический) и вы вызываете статическую переменную, вы не можете вызвать статическую функцию.

Если я скопирую ваш код и запустил его с помощью PHP 7 дает другую ошибку:

Fatal error: Constant expression contains invalid operations in C:\inetpub\wwwroot\test.php on line 4

Чтобы решить проблему, используйте:

<?php 
class Helper { 

    public static $app_url; 

    public static function Init() { 
     self::$app_url = self::getServerUrl(); 
    } 

    public static function getServerUrl(){ 

     global $cfg; // get variable cfg as global variable from config.php Modified by Gentle 

     $port = $_SERVER['SERVER_PORT']; 
     $http = "http"; 

     if($port == "80"){ 
      $port = ""; 
     } 

     if(!empty($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on"){ 
      $http = "https"; 
     } 
     if(empty($port)){ 
      return $http."://".$_SERVER['SERVER_NAME']."/".$cfg['afn']; 
     }else{ 
      return $http."://".$_SERVER['SERVER_NAME'].":".$port."/".$cfg['afn']; 
     } 

    } 

} 
Helper::Init(); 
+0

Благодаря она работала, но я хочу спросить, если я хочу использовать постоянные как: – gentle

+0

Спасибо @ P0lT10n Это но я хочу спросить, хочу ли я использовать константу, например: const APP_URLl; public static function Init() { self: APP_URL = self :: getServerUrl(); } он дает ошибку – gentle

+0

Это даст вам ошибку, потому что вы объявляете константу. Невозможно объявить его константой. Не забудьте отметить мой ответ как правильно, пожалуйста – matiaslauriti

Смежные вопросы