【问题标题】:static public class members in PHP on staging server登台服务器上 PHP 中的静态公共类成员
【发布时间】:2012-03-30 14:39:49
【问题描述】:

我们的暂存服务器正在生成一个解析错误,我想知道我们的预暂存服务器是否让我们的开发团队因语法错误而侥幸。

这是导致“解析错误”的代码:

       // GLOBALS.PHP
  <?php
       session_start();

      class ItemsFromBronzeAge  {
               static public $ITEMNAMELABEL = "ItemName";
      }

      class Labels {
                   static public $USER_PROMPT_ITEMNAME = "Item name here....";
      }
   ?>

我们将上面的 globals.php 包含在第二个文件中——称为 index.php——如下所示:

             // INSIDE OF INDEX.PHP
      <?php
        require_once 'globals.php'; // variables and statics used throughout

             // the next line is line #12 in the 'Parse error' message below
        $_SESSION[ItemsFromBronzeAge::$ITEMNAMELABEL] = Labels::$USER_PROMPT_ITEMNAME;

      ?>

这是我们在 1and1.com 登台服务器上运行 index.php 时的解析错误:

       " Parse error: syntax error, unexpected ']', 
         expecting '(' in index.php on line 12"

只是为了驱动这个回家,我们将 index.php 中代码中的第 12 行更改为这个,并且 1and1.com 登台服务器不再报告“解析错误”:

    // WE CHANGED FROM THIS:
    $_SESSION[ItemsFromBronzeAge::$ITEMNAMELABEL] = Labels::$USER_PROMPT_ITEMNAME;

    // TO THIS AND THE 'PARSE ERROR' GOES AWAY -- THIS CODE WORKS ON THE STAGING SERVER:
    $_SESSION["ItemName"] = "Item name here....";

我们的团队没有办法回顾我们所有的源代码,放弃使用常量作为数组索引并回归使用字符串文字作为数组索引。

我的问题是——我们的预登台开发服务器是否让我们摆脱了上面不正确的语法,或者 1and1.com 是否有某种 PHP 设置不正常,或者.......?

我的意思是使用公共静态类成员作为数组索引——这是司空见惯的。

【问题讨论】:

  • 看不到任何语法错误,我的本地测试工作正常。不过,您可能应该使用类常量而不是静态公共属性,例如const ITEMNAMELABEL = "ItemName";。正在使用哪些版本的 PHP?
  • 我认为这是因为“static public”应该是 public static $var="Something";
  • @Phil,这是我们愿意做出的 100% 的改变,谢谢,1and1 还没有回复我们,等待对开发工作完全不利。谢赫,我将在我们位于 1and1.com 的登台服务器上运行一个简短的测试用例,看看将顺序从“静态公共”颠倒到您对“公共静态”的建议是否有效果——据我们所知,我们的预登台服务器只是让我们摆脱了 'static public $var = "theText" -- 我会在测试后发回 -- 谢谢!
  • @wantTheBest 我的两个开发箱(5.3.6 和 5.3.9)都可以与static public 配合使用。顺序不重要

标签: php static public staging


【解决方案1】:

您在两个系统上都运行什么版本的 PHP?

听起来可能和PHP的不同版本有关。

【讨论】:

  • 我们的预登台服务器正在运行 PHP 版本 5.3.5;当我在我们的 1and1.com 帐户上检查“全球 PHP”版本时,它被设置为版本 4。并且有一个选项可以选择“版本 5”(没有显示子版本,只有“版本 5”)所以我选择了并保存了它。现在将在我上面的问题中重新运行相同的代码并报告结果....
  • DAGNABBIT MATT 你为我们做了好人!登台服务器现在显示我们的网站!呜呼。生活很好。现在回到编码!谢谢老兄!
  • 不错!祝你好运。
猜你喜欢
  • 2013-02-25
  • 2015-02-10
  • 2018-05-20
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多