【问题标题】:class construction must work in different php versions类构造必须在不同的 php 版本中工作
【发布时间】:2015-01-07 18:27:14
【问题描述】:

我们的一个用户组在 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。谢谢

【问题讨论】:

    标签: php class constructor versioning


    【解决方案1】:

    5.2.x 和 5.3.x 差别很大

    在 php 的面向对象方面进行了很多更改。

    我不会提及 5.2.x 有多么过时。

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

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

    【讨论】:

    • 我已经看过了。答案并没有告诉我我需要改变什么。我希望有版本经验的人可以告诉我要在代码中更改什么。在分配 $DB_HOSTs 的地方不会发生错误,但在使用它的地方更远,并且该值是空白的,因为没有调用 __construct()。
    • 在 php 5.2 中 __construct 不存在。 PHP 5.2 类没有构造函数。
    • 这很容易解决。如果有人猜到我做了什么并发帖,我会选择它作为答案。我不想自己发布答案。
    • 我很高兴你明白了 :)
    猜你喜欢
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 2017-03-07
    • 2022-11-01
    • 2014-05-15
    • 2014-03-02
    • 2013-01-05
    • 1970-01-01
    相关资源
    最近更新 更多