2014-12-02 42 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