2012-10-19 65 views
1

我有2個問題通過另一個php文件定義值編輯

1.)如何編寫update_defile($array_value){...}函數?

define_file.php

<?php 
    define("FIST_NAME", "something1"); 
    define("LAST_NAME", "something2"); 
    define("ADDRESS", "something3"); 
?> 

「東西」 是不是一個恆定值,它可以改變每一個方法Call(update_defile($array_value)

值設置

$array_value = ("FIST_NAMe" => "duleep", "LAST_NAME" => "dissnayaka", "AGE" => "28"); 

後調用方法(update_defile($ array_value ){.....})「define_file.php」 文件想要看起來像波紋管

)。
<?php 
    define("FIST_NAME", "duleep"); 
    define("LAST_NAME", "dissnayaka"); 
    define("ADDRESS", "something3"); 
    define("AGE", "28"); 
?> 

2)。

我的數據庫是Oracle。我已經將配置值保存在數據庫中,但經常將這些配置值用於我的應用程序。所以我得到價值形式數據庫並保存在define_file.php作爲增加性能(降低率數據庫調用),但我不知道我可以提高性能保持PHP文件中的配置值請解釋。什麼是提高我的應用程序和其他替代解決方案的性能的最佳方式。

回答

1
 public function update($form_config_arr) 
    { 

     if((is_readable($config_file_path)) && is_writable($config_file_path)) 
     { 
     if(!$config_old_file_content = file_get_contents($config_file_path)) 
     { 
      throw new Exception('Unable to open file!'); 
     } 

     $i = 0; 
     $config_old_arr = array(); 
     $config_new_arr = array(); 

     foreach ($form_config_arr as $constant => $value){ 
      $config_old_line = $this->getLine($constant); 
      $config_old_arr[$i] = $config_old_line; 

      if(($value == 'true') || ($value == 'false')){ 
       $config_new_arr[$i] = "define ('$constant', $value);\n"; 
      }else{ 
       $config_new_arr[$i] = "define ('$constant', '$value');\n"; 
      } 
      $i++; 
     } 

     $config_new_file_content = str_replace($config_old_arr, $config_new_arr, $config_old_file_content); 
     $new_content_file_write = file_put_contents($config_file_path, $config_new_file_content); 

     foreach ($config_new_arr as $constant => $value) 
     { 
      echo $value.'<br/>'; 
     } 
     return true; 
     }else{ 
     throw new Exception('Access denied for '.$config_file_path); 
     return false; 
     } 

    } 

    /** 
    * 
    * @param string $constant 
    * @return string 
    */ 
    private function getLine($constant) 
    { 
     $match_line = ''; 
     $config_file = fopen($config_file_path, "r"); 
     if($config_file) 
     { 
     //Output a line of the file until the end is reached 
     $i = 0; 
     while(!feof($config_file)) 
     { 
      $i++; 
      $config_old_line = fgets($config_file); 
      $pos = strpos($config_old_line, $constant); 
      if($pos !== false) 
      { 
       $match_line= $config_old_line; 
      } 
     } 
     fclose($config_file); 
     return $match_line; 
     }else{ 
     throw new Exception('Unable to open file!'); 
     } 

    } 
+0

歡迎提高我的代碼:) – Duleep

0

你正在做的是編輯一個文件。 只需創建另一個PHP腳本:updater.php 應該查詢數據庫,獲取價值觀和define_file.php更新值

查找PHP文件處理功能在這裏:http://www.w3schools.com/php/php_file.asp

+0

但我的客戶需要一個位置,以保持對於編輯define_file.php文件 – Duleep

1

爲什麼不能u使用會話要存儲這些值,那麼你可以從腳本中的任何地方訪問和修改 。

<?php 
    session_start(); 
    $_SESSION["FIST_NAME"]= "something1"; 
    $_SESSION["LAST_NAME"]= "something2"; 
    $_SESSION["ADDRESS"]= "something3"; 


?> 
+0

這是好主意,但define_file.php文件主要原因有超過200個變量的配置值。所以我覺得會議不能處理那種記憶。任何方式感謝您的反饋 – Duleep

+0

實際上定義是用於常量,那麼你不應該改變它在運行時設置一次。 –

+0

確定我的主要想法是爲每個Web應用程序創建配置文件。每個客戶都有單獨的配置文件 – Duleep

相關問題