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

类构造必须在不同的php版本中工作,php,class,constructor,versioning,Php,Class,Constructor,Versioning,我们的一个用户组在godaddy.com上创建并维护了一个网站。制作它的人离开了,用户向MIS寻求帮助,我被要求做出改变。它必须保留在godaddy.com上,直到我们找到最好的方法将应用程序移动到我们自己的服务器上 为了创建一个测试环境,我将所有内容下载到我的工作站,启用了IIS,并安装了PHP和MySQL。进行了必要的修改。用户批准了这些更改。不幸的是,其中一个文件在godaddy.com上不起作用。我请求帮助是因为我有PHP经验,但没有太多的类工作经验 该守则最初有: private st

我们的一个用户组在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';
我读过关于“private static”的文章,发现不能使用外部变量设置变量,必须使用_construct()方法。进行此更改后,它在我的机器上正常工作。我认为这可能是版本控制问题,下面的stackoverflow问题证实了这一点


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

5.2.x和5.3.x之间有巨大的差异

很多更改都是在php的面向对象方面进行的

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

您可以查看此项以查看更改


我已经看过了。答案没有告诉我需要改变什么。我希望有版本经验的人能告诉我要在代码中修改什么。在分配$DB_HOSTs的地方不会发生错误,但在使用它的地方会发生错误,并且该值为空,因为没有调用_construct()。在PHP5.2中_construct不存在。PHP5.2类没有构造函数。这是一个简单的修复方法。如果有人猜到我做了什么,我会选择这个作为答案。我不想自己发布答案。我很高兴你找到了答案:)