2016-01-22 101 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;和更多(甚至定义类)。

执行,而不是读取,一个配置文件

  • 主要优点:可以包含任何可执行语句,如定义和初始化阵列。因此,潜在的,如果需要
  • 主要缺点任何(甚至复杂的)安装结构可供选择:更容易出错,因为它可能会失败时的变化引入语法错误中运行,它可能使用更多的系统资源

在最终我永远无法衡量执行和读取配置文件之间的巨大差异。而且 - 由于配置文件是由安装脚本编写的,而不是手动修改的,所以插入语法错误的方面并不重要。