簡體   English   中英

取決於HTTP_HOST的PHP常數

[英]Php Constant that depend from HTTP_HOST

我希望我的常數取決於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()定義一個具有全局范圍的常量,因此可以在您的類中訪問它。 使用全局作用域應該謹慎而不是太頻繁,但是對於主機名之類的話,可能是合適的:

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進行靜態訪問。

您可以像這樣在配置文件中全局定義常量,然后在類中訪問它們,如下所示。 通常,開發和實時服務器上的數據庫詳細信息會有所不同,因此使用此語法。

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM