2016-01-22 100 views
-1

我正在爲一個web項目創建一個安裝頁面,以便在它變爲活動之前定義所有配置變量和常量。我想將這些配置變量保存在數據庫中,但項目經理希望將它們保存在一個文件中。所以出現了我的問題。我如何定義這些變量,而const或define將適用於這項工作? 例如何定義一個變量const或靜態

<?php 
$email_parameter="[email protected]"//we need to set this at install.php page and keep it that way 
?> 
+0

已安裝的應用程序後,您需要爲您的項目是每一個頁面的全局變量?我認爲你知道答案,全局變量是和不好的,雖然我不知道你的項目細節。通常,配置變量保存在配置文件中,Config類可以通過您需要的配置變量的參數來訪問。常量應該是他們是什麼 - 常量,意味着它們不應該是配置變量。 –

+0

也看看[這](http://stackoverflow.com/questions/2447791/define-vs-const) – Ali

+0

@SiimKallari因爲項目經理希望,並提出這樣的話,我將需要找到一種方法來項目去做。我爲這個和一個類創建了一個文件,但是我想知道如何設置那些需要保持不變但同時能夠改變的變量?首先,我認爲擰它,我會創建文件,並用fwrite寫東西,但似乎是錯誤的。 –

回答

0

那麼我檢查所有的答案,我感謝你,幫我找到我的正確路徑(至少一個滿足我的「項目經理」。)我結束了下面這個解決方案:(這些價值例如)

$f=fopen("config.php","w"); 
    $database_inf="<?php 
    define('DATABASE_HOST', '".$database_host."'); 
    define('DATABASE_NAME', '".$database_name."'); 
    define('DATABASE_USERNAME', '".$database_username."'); 
    define('DATABASE_PASSWORD', '".$database_password."'); 
    define('ADMIN_NAME', '".$admin_name."'); 
    define('ADMIN_PASSWORD', '".$admin_password."'); 
    ?>"; 
    if (fwrite($f,$database_inf)>0){ 
    fclose($f); 
    } 

這只是和示例,以顯示我如何解決它。首先,我創建並安裝了php,並在沒有配置文件設置時爲該頁面設置默認路由。然後我問用戶輸入realted值並將它們保存在變量中。最後我創建了一個配置文件,並將它們引入其中。我希望這可以幫助處理類似情況的其他人。

0

你需要的是define

define('__CONSTANT_NAME__', '[email protected]'); 
+0

請記住,您需要加載每個請求用戶所做的常量聲明文件。 –

1

可以使用圖案登記

<?php 
/** 
* Registry 
*/ 
class Product 
{ 

    /** 
    * @var mixed[] 
    */ 
    protected static $data = array(); 


    /** 
    * add value to registry 
    * 
    * @param string $key 
    * @param mixed $value 
    * @return void 
    */ 
    public static function set($key, $value) 
    { 
     self::$data[$key] = $value; 
    } 

    /** 
     * get value from registry 
     * 
     * @param string $key 
     * @return mixed 
     */ 
     public static function get($key) 
     { 
     return isset(self::$data[$key]) ? self::$data[$key] : null; 
     } 

     /** 
     * remove value from registry 
     * 
     * @param string $key 
     * @return void 
     */ 
     final public static function removeProduct($key) 
     { 
      if (array_key_exists($key, self::$data)) { 
       unset(self::$data[$key]); 
     } 
    } 
} 

/* 
* ===================================== 
*   USING OF REGISTRY 
* ===================================== 
*/ 

Product::set('name', 'First product'); 

print_r(Product::get('name')); 
// First product 
+0

我會立即檢查。 –

0

定義,定義( 'const_name', 'const_value')

  • 在全球範圍內都可用(!),
  • 比const更靈活(至少在舊的PHP版本中)。

常量

  • (至少在老版本PHP)僅適用於類定義。

  • ,除非你已經在使用PHP版本7
  • 不能定義結構,如數組,對象等(定義做不尊重命名空間(儘管您可以像這樣區分自己:「ns1/ns2/constant_name」

所以,我建議讓你的安裝腳本寫一個配置文件,例如config.inc包含定義語句爲收集的值。然後讓運行時腳本包含(執行)它:require_once()

如果(也許以後)構造像數組應該被初始化,安裝腳本可能會添加這些語句&hellip;和更多(甚至定義類)。

執行,而不是讀取,一個配置文件

  • 主要優點:可以包含任何可執行語句,如定義和初始化陣列。因此,潛在的,如果需要
  • 主要缺點任何(甚至複雜的)安裝結構可供選擇:更容易出錯,因爲它可能會失敗時的變化引入語法錯誤中運行,它可能使用更多的系統資源

在最終我永遠無法衡量執行和讀取配置文件之間的巨大差異。而且 - 由於配置文件是由安裝腳本編寫的,而不是手動修改的,所以插入語法錯誤的方面並不重要。