2014-12-02 43 views
4

我有一个主页,我有一些变量,如电话号码,打开时间等,我不能想到一种方式来永久存储多个变量,而不是在数据库中,我不想制作一张表来存储1行的属性值。我正在考虑使用一个文本文件,但我真的不知道。存储页面属性没有数据库

+0

没有其他可能:数据库,文本文件,hardcording。 – 2014-12-02 12:43:18

+1

你会多少次更新这些变量?那些更新将如何进行? – 2014-12-02 12:59:20

+0

在进入StackOverflow之前,您应该已经完成​​了足够的研究/工作,您已经完成了代码初稿。当你仍然处于这样的设计阶段时,你的问题最终会出现太多的开放式/广泛的问题,以适合像SO这样的问答网站 - 最好把它放在论坛上。 – ArtOfWarfare 2014-12-02 15:03:33

回答

5

如果您要将页面信息作为变量存储在另一个PHP文件中,您可以使用PHP's require_once

这将像数据库(排序)。

如果这是一个您的变量你的PHP文件(我们称之为a.php):

<?php 
    $phoneNumber = "1234 5678"; 
    $openTimes = "09:00-17:00"; 
?> 

你会使用require_once("/a.php");利用文件中的变量,并使用它们像这样:

<?php 
    require_once("/a.php"); 
    echo "Phone Number: " . $phoneNumber; 
?> 

require_once非常有用的 PHP的功能,可以用于很多目的。的require_once

潜在用途的例子:

  • 正好从一个header PHP文件
  • 连接到其中require_once“编文件位于一个安全的非数据库维护跨越整个网站的标题(减少某人'劫持'你的数据库的机会)
  • 在不需要数据库的地方存储容易改变的变量。
+1

公平地说,如果你想在它的最后有一个可读的文件,但是会产生一个非常“全局”的范围,这是一个更好的答案。 – 2014-12-02 12:51:09

+2

实际上,你可以做'<?php return ['phoneNumber'=>'1234','openTimes'=> '09:00-17:00'];'然后在调用代码中$ data = require 'a.php';' – 2014-12-02 12:52:11

+1

@RobBaillie这个文件可能包含一个类,它可能会大大降低它的'全局变量'。 – cybermonkey 2014-12-02 12:53:02

6

这正是诸如Joomla等CMS解决方案的目标。只要您开始沿着这条路线走下任何体面的数据,您可能想要开始寻找类似的东西。

但是,如果您真的想要,您可以沿任何想要存储的序列化路线并将其放入文本文件中。

例如,将其设置:

$configuration = array('PhoneNumber' => '123456789', 
         'OpenTimes' => 'Monday 9:00 to 12:00'); 

file_put_contents('configuration.txt', serialize($configuration); 

获得它回来了:

$configuration = unserialize(file_get_contents('configuration.txt')); 

该文件可以包含任何东西 - 字符串或对象或什么的。请注意,如果存储对象,则需要确保在重新加载它们之前可能需要包含它们的类定义。如果你存储资源(就像数据库连接 - 我知道,不太可能!),你需要重新连接或重新打开资源。

另外 - 如果它真的只是一系列简单的字符串,你可能想看看ini文件。

http://php.net/manual/en/function.parse-ini-file.php

比方说,你有configuration.ini文件与内容:

[address_info] 
phone_number = 123456789 
open_times = Monday 9:00 to 12:00 

然后,您可以用加载:

$configuration = parse_ini_file("configuration.ini", true); 

再搭配参考:

$configuration['address_info']['phone_number'] 
+0

我可能会使用这个,但这是否是一种常见方式?我只是想知道,所以我习惯了我应该使用的东西,而不是我可以使用的东西。 – Batzz 2014-12-02 12:53:36

+0

@Batzz'我最常见'的方式是我在答案中概述的方式,但我会说这两种方法都很好。 – cybermonkey 2014-12-02 12:55:06

+1

有很多常见的方法 - 如果它是一个非常简单的结构,你也可以看看ini文件 - 我已经添加了对 – 2014-12-02 12:55:25

3

方法有很多种:

  1. JSON

    $data = json_decode(file_get_contents('config.json'), true); 
    
  2. PHP本机序列

    $data = unserialize(file_get_contents('config.bin')); 
    
  3. INI文件

    $data = parse_ini_file('config.ini'); 
    
  4. PHP文件

    $data = require 'config.php'; 
    
    // config.php 
    <?php 
    return ['foo' => 'bar']; 
    
  5. XML文件格式的文本文件等

每个选项都有其特殊性,有可能出现的最坏的格式手动编辑的本机序列。如果性能很重要,并且您选择了需要大量解析的格式,则您需要有一个缓存层来缓解解析时间。

注意:如果您正在使用PHP编写和读取数据,您还需要担心file locking

+0

的引用。 – cybermonkey 2014-12-02 13:06:46