2016-03-21 3 views
-1

Там находится файл с именем default.Db.php просто, содержащий:Редактировать массив и сохраните файл как новый PHP файл

<?php 
// OLD FILE 
function get_DbConfig(){ 
    $config = array (
       'source' => 'array',        
       'host'  => 'DATABASE_HOST', 
       'port'  => 'DATABASE_PORT', 
       'username' => 'DATABASE_USER', 
       'password' => 'DATABASE_PASSWORD', 
       'database' => 'DATABASE_NAME' 
      ); 
    return $config; 
} 
require_once './../Common/php/face.php'; 
?> 

Что способ заменить $config внутри get_dbConfig с моим собственным массивом? Например, массив, в котором каждый ключ имеет определенное значение. После замены значений внутри этого массива, я переименовать файл в Db.php

<?php 
// NEW FILE 
function get_DbConfig(){ 
    $config = array (
       'source' => 'array',        
       'host'  => 'localhost', 
       'port'  => '3306', 
       'username' => 'foo', 
       'password' => 'bar', 
       'database' => 'foobar' 
      ); 
    return $config; 
} 
require_once __DIR__.'./../Common/php/OperateDB/DbMgrInterface.php'; 
?> 
+0

И почему именно вы хотите это сделать? –

+0

@DebosmitRay Итак, чтобы я мог заполнить этот массив своими собственными значениями, которые получаю во время выполнения. –

+0

обычный подход добавляет переменную как параметр функции – daremachine

ответ

0

Я не знаю, почему вы хотите так поступать. Для этого есть более эффективные методы. Однако вы могли бы сделать следующее:

try { 
      // Read the whole file into memory 
      $fileStr = file_get_contents('../default.Db.php'); 
      // Replace each string with a valid value 
      $fileStr = str_replace('DATABASE_HOST', HOST, $fileStr); 
      $fileStr = str_replace('DATABASE_USER', USER, $fileStr); 
      $fileStr = str_replace('DATABASE_PASSWORD', PASSWORD, $fileStr); 
      $fileStr = str_replace('DATABASE_NAME', DB_NAME, $fileStr); 
      $fileStr = str_replace('DATABASE_PORT', PORT, $fileStr); 
      // Write the modified content 
      file_put_contents("../default.Db.php", $fileStr); 
      // Rename default.Db.php to Db.php 
      $isRenamed = rename('../default.Db.php','../Db.php'); 
      if($isRenamed) { 
       require_once './../Db.php'; 
      } 
     }catch(Exception $exc) { 

     } 
0

Сначала вы должны передать аргумент в функции. после этого, когда вы вызываете эту функцию, в это время вам нужно передать свой массив и назначить значение массива переменной назначения.

<?php 
    function get_DbConfig($configdata){ 
      $config = array (
       'source' => $configdata ['array'],        
       'host'  => $configdata['DATABASE_HOST'], 
       'port'  => $configdata['DATABASE_PORT'], 
       'username' => $configdata['DATABASE_USER'], 
       'password' => $configdata['DATABASE_PASSWORD'], 
       'database' => $configdata['DATABASE_NAME'] 
      ); 
    return $config; 
} 
require_once './../Common/php/face.php'; 
?> 
+0

Это будет означать вызов функции каждый раз с конфигурацией. Я хочу отредактировать/изменить файл default.Db.php, так что, когда я вызываю 'get_DbConfig', он просто возвращает значения, установленные ранее –

+0

ok, поэтому вы хотите изменить массив и сохранить файл в виде php-файла? – daremachine

+0

@daremachine Точно. –

Смежные вопросы