类构造必须在不同的PHP版本中工作

时间:2015-01-07 18:27:15

标签: php class constructor versioning

我们的一个用户组已创建并一直在godaddy.com上维护一个网站。让它离开的人,用户向MIS寻求帮助,并且我被要求进行更改。它必须保留在godaddy.com上,直到我们弄清楚如何最好地将应用程序移动到我们自己的服务器上。

为了建立测试环境,我将所有内容下载到我的工作站,启用了IIS,并安装了PHP和MySQL。进行了必要的修改。用户批准了更改。不幸的是,其中一个文件在godaddy.com上不起作用。我正在寻求帮助,因为我有PHP经验,但对课程没有太多帮助。

最初的代码有:

private static $DB_HOSTs = 'xxxxxxx';

我把它改为:

private static $DB_HOSTs;
public function __construct() {
    $this->DB_HOSTs = (strtoupper($_SERVER["HTTP_HOST"])=='D444L40334') ? 'localhost:3306' : 'xxxxxxxx';

我读到有关“私有静态”的查找变量无法使用外部变量进行设置,因此必须使用__construct()方法。进行此更改后,它在我的机器上正常工作。我认为这可能是一个版本控制问题,下面的stackoverflow问题PHP Version Upgrade Caused Problems With Class Constructors证实了这一点。

我需要在我的工作站和godaddy.com网站上使用相同的代码。我不会在两者之间使用不同的文件来更改从测试到生产的文件。相反,我使代码动态化。在这种情况下我需要做出哪些改变?我的工作站PHP版本是5.3.28,godaddy.com是5.2.17。感谢

1 个答案:

答案 0 :(得分:0)

5.2.x和5.3.x之间存在巨大差异

很多变化都是在php的面向对象方面进行的。

我不会提到过时的5.2.x是多么过时。

您可以查看此内容以查看更改。

http://php.net/manual/en/migration53.php