[英]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( '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.