依赖于HTTP_HOST的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';
}

但是我不知道如何使用类进行编写

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

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;

您可以使用define()来定义一个具有全局作用域的常量,因此可以在您的类中访问该常量。使用全局作用域应该小心,不要太频繁,但对于主机名这样的东西,它可能是合适的:

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

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

制作这样的类:

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

将使变量只能由类实例和子类访问。

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

配置文件:

define ("DB_HOST", "localhost");

类别:

class database{
private $dbHost;
function __construct() {
$this->dbHost= DB_HOST;
} 

这样,当您需要常量时,只需将它们包括在内,就可以将它们添加到多个类中。如果您更改配置,更改将反映到您的所有应用程序中。在类中对define()进行硬编码是一种糟糕的做法。

  • 定义的常量(带define)将通过其定义的名称constant_NAME静态访问

最新更新