从HTTP_HOST

时间:2016-01-09 11:59:16

标签: php

我希望我的常量取决于HTTP_HOST

的值
 if ($_SERVER['HTTP_HOST'] == 'localhost') {
    const DB_HOST = 'localhost';
    const DB_USER = 'root';
    const DB_PASS = 'andrea00';
    const DB_NAME = 'ciaociao';
    } else {
    // db www.corsocomputer.com
        const DB_HOST = 'localhost';
        const DB_USER = 'root';
        const DB_PASS = 'andrea00';
        const DB_NAME = 'ciaociao';
    }

我有这个,这段代码没问题。

但我想用类似

的类写这个
class Context {

    const NomeAttivita = 'test test test';

}

但我不知道怎么写类

3 个答案:

答案 0 :(得分:0)

您可以使用define()来定义具有全局范围的常量,因此可以在您的类中访问。使用全局范围应该谨慎而不是经常进行,但对于类似主机名的东西,它可能是合适的:

define('HTTP_HOST', $_SERVER['HTTP_HOST'])
class Context {
    function doSomethingWithHost(){
        echo HTTP_HOST;
    }
}

答案 1 :(得分:0)

我建议制作一个php文件,就像配置文件一样。 然后使用define()显式定义常量。这些将适用于包括它在内的所有脚本。

制作这样的课程:

   class Context {
    const DB_HOST = 'localhost';
    const DB_USER = 'root';
    const DB_PASS = 'andrea00';
    const DB_NAME = 'ciaociao';
}

将使变量只对类实例和子项可访问。

对于您的上下文类,您可以导入" db设置"对于数据库连接类,您可以在类构造函数中从配置文件中设置类变量:

配置文件:

define ("DB_HOST", "localhost");

班级:

class database{
private $dbHost;

function __construct() {
$this->dbHost= DB_HOST;

} 

通过这种方式,当您需要常量时,只需包含它们,就可以将它们添加到多个类中。如果更改配置,更改将反映到您的所有应用程序。 在类中硬编码define()是一种不好的做法。

  • 定义的常量(带有define)可以通过其定义的名称CONSTANT_NAME静态访问。

答案 2 :(得分:0)

您可以在配置文件中全局定义常量,并在类中访问它们,如下所示。通常,数据库详细信息在开发和实时服务器上会有所不同,因此使用此语法。

define( 'DB_HOST', $_SERVER['HTTP_HOST']=='localhost' ? 'localhost' : 'server1.domain.co.uk' );
define( 'DB_USER', $_SERVER['HTTP_HOST']=='localhost' ? 'root' : 'dbo12345' );
define( 'DB_PASS', $_SERVER['HTTP_HOST']=='localhost' ? 'andrea00' : 'xyR40VklAp01M' );
define( 'DB_NAME', $_SERVER['HTTP_HOST']=='localhost' ? 'ciaociao' : 'db12345' );

class Context {
    const db_host=DB_HOST;
    const db_user=DB_USER;
    const db_pwd=DB_PASS;
    const db_name=DB_NAME;

    public function __construct(){

    }

    public function showconstants(){
        echo self::db_host, self::db_user, self::db_pwd, self::db_name;
    }
}

$ctx=new Context;
$ctx->showconstants();
$ctx=null;
相关问题