在没有数据库的情况下存储页面属性


Storing page properties without database

我有一个主页,其中有许多变量,例如电话号码,开放时间等,我想不出一种方法来永久存储多个变量,而不是在数据库中,我不想制作一个表只是为了存储1行的属性。我正在考虑可能使用文本文件,但我真的不知道。

这正是像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']
如果要将

页面信息作为变量存储在另一个PHP文件中,则可以使用PHP的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. 杰伦

    $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中写入和读取数据,你还需要担心文件锁定。